如何在C/C++LI中将C short *传递给托管C#程序集
作者:互联网
我在将参数从C/C++LI代码传递到.NET C#函数时遇到麻烦.
在C中,我有类似以下内容的内容:
void SomeFunction(short *id)
{
CSharpClass::StaticClassInstance->SetValue(id);
}
在C#端,该函数使用ref参数声明为:
public void SetValue(ref short id)
{
id = this.internalIdField;
}
调用SetValue(id)时遇到的编译器错误是“无法将参数1从’short *’转换为’short%’”.
我发现跟踪参考(%)等效于C#ref,但是我不知道如何将其与我尝试传递的short *参数一起使用.
提前致谢.
解决方法:
CSharpClass :: SetValue的逻辑C/C++LI签名为
void SetValue(short% id);
如果您知道C(而不是C/C++LI),那么这里的答案与拥有C签名的答案完全相同
void SetValue(short& id);
即,只需取消引用指针:
void SomeFunction(short *id)
{
CSharpClass::StaticClassInstance->SetValue(*id);
}