编程语言
首页 > 编程语言> > 如何在C/C++LI中将C short *传递给托管C#程序集

如何在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);
}

标签:c-cli,c
来源: https://codeday.me/bug/20191102/1992572.html