调用同一个C++动态库,显示调用,关于调用约定
一个项目 ,使用默认CallingConvention = CallingConvention.CallingConvention = CallingConvention.StdCall))
[DllImport("DLL_LIB.dll")] 能调用成功
另外一个项目 必须改成
[DllImport("DLL_LIB.dll",CallingConvention = CallingConvention.Cdecl)]
才能调用成功。非则调用函数时报错,(原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。)
ps: 这种情况只出现在用vs 运行调试时,编译过后执行exe,都能执行成功。
同样的程序代码,找不到哪里不一样,怎会出现这种纠结不清的方式。求解