日期:2014-05-18  浏览次数:20797 次

c#进行调用c++封装程序
c++ 进行封装
DLL_EXPORT int JSD_Login(int a,int b)
{
return JSD_RealPlay(a,b);
}

c#进行调用
  [System.Runtime.InteropServices.DllImport("test")]
  private static extern int JSD_Login(int a, int b);

  int c = JSD_Login(a, b);
报异常
对 PInvoke 函数“View!View.Calculate::JSD_Login”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配


------解决方案--------------------
[System.Runtime.InteropServices.DllImport("test")]
 改成
[System.Runtime.InteropServices.DllImport("test",CallingConvention=CallingConvention.Cdecl)]