在C#中一定要检查引用时的数据类型 WinAPI 的数据类型 默认是32位的,但是引用时外部的是 Long类型默认是64位的。所以引用时需要将 long 改为 int 型。
参照 http://blog.sina.com.cn/s/blog_8248282d0101hcbd.html
https://blog.csdn.net/jinhuicao/article/details/83584973
情况一:
对 PInvoke 函数“TestDLL!TestDLL.Form1::mySum”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。
解决方法:
已经可以了。加C++ 加入_stdcall 把,“允许不安全代码”,“启用非托管代码调试“去掉这样才行。
谢谢,HolyPlace,founderfang。
用户名:zp20040101 得分:0 时间:2010-09-29 06:59:30
情况二:
对 PInvoke 函数“HTLib::Usb_DelHtFile”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。
把:
[DllImport("ht32dll.dll")]
public