您的位置:首页 > 编程语言 > C语言/C++

请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配

2016-05-22 23:13 211 查看
在c#中引入c++生成的dll,出现了如下问题:

对 PInvoke 函数“GAProject!GAProject.Form1::Add”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。

解决方案:

[DllImport("Dll.dll")]改为[DllImport("Dll.dll", CallingConvention=CallingConvention.Cdecl)]
DllImport的CallingConvention的属性,默认值是CallingCovention.Stdcall,  此处更改成Cdecl(c/c++默认调用方式)就可以了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c#引用c++