我正在创建一个非常简单的PInvoke示例:
extern "C" __declspec(dllexport) int Add(int a, int b)
{
return a + b;
}
[DllImport("CommonNativeLib.dll")]
extern public static int Add(int a, int b);
return NativeMethods.Add(a, b);
但每当我调用上面的NativeMethods.Add
方法时,我都会得到以下托管调试助手:
检测到
PInvokeStackImbalance消息:对PInvoke函数'CommonManagedLib!CommonManagedLib.NativeMethods::Add‘的调用使堆栈不平衡。这可能是因为托管PInvoke签名与非托管目标签名不匹配。检查PInvoke签名的调用约定和参数是否与目标非托管签名匹配。
然后调用以预期的返回值结束,但是MDA消息的出现既烦人又令人担忧-我还没有完全理解PInvoke,但从我读到的内容来看,我非常确定我的签名是正确的-我做错了什么?
这一切都是在32位操作系统上实现的。
https://stackoverflow.com/questions/5602645
复制相似问题