在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++默认调用方式)就可以了。
版权声明:本文为u013031185原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。