1、异常提示信息为:函数调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。
2、出现场景:这种异常大多出现在C#调用C++的动态库时。
3、处理方法
把 [DllImport("winmm.dll", EntryPoint = "sndPlaySoundA",)]
改为[DllImport("winmm.dll", EntryPoint = "sndPlaySoundA" , CallingConvention = CallingConvention.Cdecl)]
//C#中引入C++ DLL库
//[DllImport("bq80xrw.dll", EntryPoint = "GetAdapterFWVersion")]
[DllImport("bq80xrw.dll", EntryPoint = "GetAdapterFWVersion, CallingConvention = CallingConvention.Cdecl)]
public static extern int GetAdapterFWVersion([MarshalAs(UnmanagedType.LPStr)]string FWVersion);