首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

小弟我疯了,原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配

2012-06-02 
我疯了,原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配我疯了对 PInvoke 函数“PMS.Common!PMS.Co

我疯了,原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配
我疯了
对 PInvoke 函数“PMS.Common!PMS.Common.calc::CalcL”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。

奇数次调用这个 出错, 
偶数次正确。 奶奶的


 [DllImport("calc.dll", CharSet = CharSet.Auto)]

  public static extern int CalcL([MarshalAs(UnmanagedType.AnsiBStr)]string exps);
  [DllImport("calc.dll", CharSet = CharSet.Auto)]
  
  public static extern float CalcF([MarshalAs(UnmanagedType.AnsiBStr )]string exps);
  [DllImport("calc.dll", CharSet = CharSet.Auto)]
  public static extern int GetError();
 



[解决办法]
要多贴一点。而且你说奇数次错误,那1,3次是出错的,你出错后如何做的,忽略异常继续?
[解决办法]
[DllImport("calc.dll", CharSet = CharSet.Auto,CallingConvention.Cdecl)]
[DllImport("calc.dll", CharSet = CharSet.Auto,CallingConvention.FastCall)]
[DllImport("calc.dll", CharSet = CharSet.Auto,CallingConvention.ThisCall)]
[DllImport("calc.dll", CharSet = CharSet.Auto,CallingConvention.StdCall)]
[DllImport("calc.dll", CharSet = CharSet.Auto,CallingConvention.Winapi)]

试试

热点排行