这是C的
//1.
HANDLE __stdcall rf_init(__int16 port,long baud);
//2.
__int16 __stdcall rf_exit(HANDLE icdev);
//3.
__int16 __stdcall rf_card(HANDLE icdev,unsigned char _Mode,unsigned long *_Snr);
以下是我的[DllImport("E:/FSBPR/ICCard/mwrf32.dll", EntryPoint = "rf_exit")]
public static extern Single rf_init(int post,long baud);
[/code]
请问这三条要怎么来引用谢谢
//1.
HANDLE __stdcall rf_init(__int16 port,long baud);
//2.
__int16 __stdcall rf_exit(HANDLE icdev);
//3.
__int16 __stdcall rf_card(HANDLE icdev,unsigned char _Mode,unsigned long *_Snr);
以下是我的[DllImport("E:/FSBPR/ICCard/mwrf32.dll", EntryPoint = "rf_exit")]
public static extern Single rf_init(int post,long baud);
[/code]
请问这三条要怎么来引用谢谢
Declare Function rf_init Lib "mwrf32.dll" (ByVal port%, ByVal baud As Long) As Long
Declare Function rf_exit Lib "mwrf32.dll" (ByVal icdev As Long) As Integer
Declare Function rf_card Lib "mwrf32.dll" (ByVal icdev As Long, ByVal mode%, Snr As Long) As Integer谢谢
可以考虑把所有long型改成int(甚至Int16)型试试
public static extern int rf_init(int port, long baud);调用:icdev = Basic.rf_init(0, 115200);出上面的错
原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。
请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配。
public static extern int rf_init(int port, int baud);
这一条C#要怎么写啊
这个 ByVal mode%, 是怎么回事啊 都没有声明是什么变量
[DllImport("E:/FSBPR/ICCard/mwrf32.dll")]
public static extern int rf_init(int port, int baud); [DllImport("E:/FSBPR/ICCard/mwrf32.dll", EntryPoint = "rf_exit")]
public static extern int rf_exit(int icdev); [DllImport("E:/FSBPR/ICCard/mwrf32.dll", EntryPoint = "rf_exit")]
public static extern int rf_card(int icdev, int mode, int Snr);现在的init和exit改为int 可以了但是
//3.
__int16 __stdcall rf_card(HANDLE icdev,unsigned char _Mode,unsigned long *_Snr);
还是报错