双方使用 stdcall 调用转换的 StackImbalance MDA 异常
StackImbalance MDA exception using stdcall calling conversion on both sides
我得到了 pInvokeStackImbalance MDA 原因不明
本地代码:
extern "C" __declspec(dllexport) __declspec(noinline) void __stdcall
Ex(__int64 mask, unsigned long *index)
{
*index = mask;
}
托管:
[DllImport("Libr.dll", CallingConvention = CallingConvention.StdCall)]
public static extern int Ex(long mask, out uint index);
...
uint val;
long mask = 12;
NativeWrapper.Ex(mask, out val); // pInvokeStackImbalance MDA here
如您所见,CallingConvention StdCall 正在使用.. 此处警告的原因是什么?
本机函数 return 类型是 void
但您的 C# 代码 return 是 int
。
我得到了 pInvokeStackImbalance MDA 原因不明
本地代码:
extern "C" __declspec(dllexport) __declspec(noinline) void __stdcall
Ex(__int64 mask, unsigned long *index)
{
*index = mask;
}
托管:
[DllImport("Libr.dll", CallingConvention = CallingConvention.StdCall)]
public static extern int Ex(long mask, out uint index);
...
uint val;
long mask = 12;
NativeWrapper.Ex(mask, out val); // pInvokeStackImbalance MDA here
如您所见,CallingConvention StdCall 正在使用.. 此处警告的原因是什么?
本机函数 return 类型是 void
但您的 C# 代码 return 是 int
。