如何解决如何在C ++ / CLI中将C ++ short *传递给托管C#程序集
|| 我在将参数从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);
}
,如果您想长期使用,请声明一个跟踪参考,将该跟踪参考分配给您的id参数,然后将该跟踪参考传递给您的函数...
short %s = *id;
SetValue (s);
如果您不想太忙,只需取消引用指针即可。虽然编译器无法将short *转换为short%,但可以将short转换为short%...
SetValue (*id);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。