快生活 - 生活常识大全

调用错误


  分两种情况:
  静态调用时,需要在函数声明语句中加入CallingConvention = CallingConvention.Cdecl
  如下所示:
  [DllImport("TestDLL.dll", EntryPoint = "Add", ExactSpelling = false, CallingConvention = CallingConvention.Cdecl)]
  public static extern int Add(int a, int b);
  动态调用DLL时,需要修改生成DLL的源码。 在函数前面加上 __stdcall。
  如下所示:
  int _stdcall Add(int a,int b)
  {
  cout << "TestDll"<<endl;
  return a + b;
  }
  这样就解决了PinvokeStackImbalance问题
网站目录投稿:巧芹