我在将参数从 C++/CLI 代码传递到 .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++/CLI 签名是
void SetValue(short% id);
如果您了解 C++(而不是 C++/CLI),这里的答案与您拥有 C++ 签名时的答案完全相同
void SetValue(short& id);
即,简单地取消引用指针:
void SomeFunction(short *id)
{
CSharpClass::StaticClassInstance->SetValue(*id);
}
关于c# - 如何在 C++/CLI 中将 C++ short* 传递给托管 C# 程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6118263/