如何使用 C# 中使用 ref sbyte 的方法处理 COM 引用
Posted
技术标签:
【中文标题】如何使用 C# 中使用 ref sbyte 的方法处理 COM 引用【英文标题】:How to treat COM references with methods that use ref sbyte in C# 【发布时间】:2017-08-23 09:11:48 【问题描述】:我的本地 ATL COM 项目中的方法有以下 IDL 定义:
[id(1)] HRESULT Create([in] CHAR* a, [out] Details* b);
我从我的 C# 项目中添加了对我的 COM 对象的引用,它为我生成了这个函数的存根,我需要调用它:
void Create(ref sbyte a, out SampleNativeLib.Details b)
我希望库允许我在此函数上使用字符串作为 ref sbyte a
参数。
如何调用它生成的Create
方法?是否有任何替代方法让它接受 ref sbyte a
参数作为字符串?
【问题讨论】:
this 可能会让您入门(其他方向相同) @dlatikay 我正在尝试从托管到本地,而不是相反... 我想说的是,反过来它的工作方式也一样:重写 ATL 函数,使其接受 BSTR,该函数将映射到 c# 中的string
。 another related one
【参考方案1】:
您需要添加string 属性。这确保CHAR
指针被视为字符串:
[id(1)] HRESULT Create([in, string] CHAR* a, [out] Details* b);
【讨论】:
以上是关于如何使用 C# 中使用 ref sbyte 的方法处理 COM 引用的主要内容,如果未能解决你的问题,请参考以下文章