双方使用 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