C# 如何使用C中使用ref-sbyte的方法处理COM引用#

C# 如何使用C中使用ref-sbyte的方法处理COM引用#,c#,.net,com,interop,atl,C#,.net,Com,Interop,Atl,我对本机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 sbyt

我对本机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
参数作为字符串?

您需要添加该属性。这确保
CHAR
指针被视为字符串:

[id(1)] HRESULT Create([in, string] CHAR* a, [out] Details* b);

可能会让你开始(在另一个方向上也是一样)@dlatikay我在这里尝试从托管到本机,而不是从另一个方向…我想说的是,它将以同样的方式工作:重写ATL函数,使其接受BSTR,它将映射到c#中的
string