VB程序调用VC编写的dll,总是出错?哪位高手能指教一下
VB程序调用VC编写的dll,总是出错?谁能指教一下
C++程序中:
USB2080_Read.cpp文件中:
extern "C "
void EXPORT _stdcall StartDeviceAD(int FirstChannel,int LastChannel, int Usb_Port, CString filename) //读取卡件数据,启动线程
{
......
}
extern "C "
void EXPORT _stdcall StopDeviceAD()//释放卡件
{
........
}
USB2080_Read.def文件中:
EXPORTS
StartDeviceAD; Explicit exports can go here
StopDeviceAD ; Explicit exports can go here
USB2080_Read.h文件中:
extern "C "
{
void EXPORT _stdcall StartDeviceAD(int FirstChannel,int LastChannel, int Usb_Port, CString filename);
void EXPORT _stdcall StopDeviceAD();
}
VB程序中:
Private Declare Sub StartDeviceAD Lib "C:\WINDOWS\system\USB2080_Read.dll " _
(ByVal FirstChannel As Long, ByVal LastChannel As Long, ByVal Usb_Port As Long, ByVal filename As String)
Private Declare Sub StopDeviceAD Lib "C:\WINDOWS\system\USB2080_Read.dll " ()
然后在后面用。
但是,当退出VB程序时,每两次就会发生一次错误。
提示:Chamber(VB的程序名)遇到一个问题,需要关闭,对此带来的不便深表歉意。
------解决方案--------------------
很可能是参数类型不同所引起
------解决方案--------------------
我怀疑可能还是CString参数出的问题。把它该成char*试下
------解决方案--------------------
CString 很难说,但是 string 肯定可以, char * 也没问题,倒是在 vb 里面,我没传过 string ,一般我调 dll 的时候传 byte()
C++程序中:
USB2080_Read.cpp文件中:
extern "C "
void EXPORT _stdcall StartDeviceAD(int FirstChannel,int LastChannel, int Usb_Port, CString filename) //读取卡件数据,启动线程
{
......
}
extern "C "
void EXPORT _stdcall StopDeviceAD()//释放卡件
{
........
}
USB2080_Read.def文件中:
EXPORTS
StartDeviceAD; Explicit exports can go here
StopDeviceAD ; Explicit exports can go here
USB2080_Read.h文件中:
extern "C "
{
void EXPORT _stdcall StartDeviceAD(int FirstChannel,int LastChannel, int Usb_Port, CString filename);
void EXPORT _stdcall StopDeviceAD();
}
VB程序中:
Private Declare Sub StartDeviceAD Lib "C:\WINDOWS\system\USB2080_Read.dll " _
(ByVal FirstChannel As Long, ByVal LastChannel As Long, ByVal Usb_Port As Long, ByVal filename As String)
Private Declare Sub StopDeviceAD Lib "C:\WINDOWS\system\USB2080_Read.dll " ()
然后在后面用。
但是,当退出VB程序时,每两次就会发生一次错误。
提示:Chamber(VB的程序名)遇到一个问题,需要关闭,对此带来的不便深表歉意。
------解决方案--------------------
很可能是参数类型不同所引起
------解决方案--------------------
我怀疑可能还是CString参数出的问题。把它该成char*试下
------解决方案--------------------
CString 很难说,但是 string 肯定可以, char * 也没问题,倒是在 vb 里面,我没传过 string ,一般我调 dll 的时候传 byte()