首先,要了解代码是错误的(并且一直都是)。“
pInvokeStackImbalance”本身并不是例外,而是托管的调试助手。在VS2008中默认情况下处于关闭状态,但是很多人没有将其打开,因此在VS2010中默认情况下处于打开状态。MDA不在发布模式下运行,因此如果您为发布而构建,则它不会触发。
在您的情况下,调用约定不正确。
Dllimport默认为
CallingConvention.WinApi,与
CallingConvention.StdCallx86桌面代码相同。应该是
CallingConvention.Cdecl。
可以通过将行编辑
[Dllimport("ImageOperations.dll")]为:[Dllimport("ImageOperations.dll", CallingConvention = CallingConvention.Cdecl)]有关更多信息,请参见此MSDN参考。



