.net2005(c#)里调用接口库函数的问题,求助!!!(50分)

  • 主题发起人 主题发起人 mevip
  • 开始时间 开始时间
M

mevip

Unregistered / Unconfirmed
GUEST, unregistred user!
我是用周立功公司的CAN_bus卡(PCI9820卡)来跟下位机进行数据通讯。通过调用CAN卡的接口哭函数来收发数据。在Visual Studio.net2003(C#)里调用接口库函数时是这样,能编译通过。
[ DllImport( "ControlCAN.dll", EntryPoint="VCI_Transmit", CharSet=CharSet.Auto)]
public static extern uint VCI_Transmit( uint devType, uint devIndex,uint canIndex,[In, Out] CanObj canObj,ulong len );
现在我想把程序移植到VS.net2005里,但调接口库函数时就会提示错误:
对 PInvoke 函数“TFR!ShiLijun.Utilities.CANLib::VCI_Transmit”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。
我修改了DllImport的调用属性:[ DllImport( "ControlCAN.dll", EntryPoint="VCI_Transmit", CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall )]
还是出错,又改了CallingConvention的属性值为:CallingConvention=CallingConvention.thisCall ,不提示语法错误了,但还是不能收发数据。我尝试了DllImport 的所有属性,但都不行。在此,想求助高手来帮帮我,不胜感激。
 
后退
顶部