分兩種情況:
靜態(tài)調(diào)用時(shí),需要在函數(shù)聲明語(yǔ)句中加入CallingConvention = CallingConvention.Cdecl
如下所示:
[DllImport("TestDLL.dll", EntryPoint = "Add", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
public static extern int Add(int a, int b);
動(dòng)態(tài)調(diào)用DLL時(shí),需要修改生成DLL的源碼。 在函數(shù)前面加上 __stdcall。
如下所示:
int _stdcall Add(int a,int b)
{
cout << "TestDll"<<endl;
return a + b;
}
這樣就解決了PinvokeStackImbalance問(wèn)題
聯(lián)系客服