Why do I get “PInvokeStackImbalance was detected” for this simple example?

半城伤御伤魂 提交于 2019-11-30 06:39:27

You need to instead use either

[DllImport("CommonNativeLib.dll", CallingConvention = CallingConvention.Cdecl)]

or

extern "C" __declspec(dllexport) int __stdcall Add(int a, int b) ...

because regular C functions work differently than the Windows API functions; their "calling conventions" are different, meaning how they pass around parameters is different. (This was hinted at in the error.)

Vijay Kumbhoje

The Stack Imbalance reasons are either the signature is not matching else Calling Convention by default calling convention is stdcall. When your calling convention is stdcall callee cleans the stack if you want caller to clean the stack us cdecl calling convention. you can find more Here

But if you are facing because of signature, just go through above link Solve Signature based Stack Imbalance issues using PInvoke extension

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!