微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用DllImport时,在C#中包装C ++参考参数

如何解决使用DllImport时,在C#中包装C ++参考参数

|| 我正在尝试使用C#代码包装具有参考参数的C ++函数。 我的C#包装器类有
[DllImport(TestCppDLL.dll)]
public static extern void foo(out int a,out int b,out double c);

public void main()
{
    int a;
    int b;
    double c;

    this.foo(out a,out b,out c);
    Console.WriteLine(a + b + c);
}
我的C ++代码
extern void foo(int &a,int &b,double &c)
{
     a = 1;
     b = 2;
     c = 3;
}
因此,我希望输出为\“ 123 \”,但得到\“ 000 \”。 如何包装C ++参考参数? 先感谢您,     

解决方法

您的C ++代码返回一个double,但是您的C#代码将函数声明为具有空返回值。 您可能还会遇到呼叫约定不匹配的情况。 C ++默认为cdecl,C#默认为stdcall。 否则就可以了。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。