VB 调用dll,数据类型不对
这个dll对方给出了VC的一个例程如下:函数原型:intOpenComm(HANDLE*hCom,char*com_port)功能说明:打开计算机串口。输入参数:●——h...
这个dll对方给出了VC的一个例程如下:
函数原型:int OpenComm(HANDLE *hCom,char *com_port)
功能说明:打开计算机串口。
输入参数:
●——hCom:串口句柄
●——com_port:串口文件名
调用例程:
char comm[]="COM1";
OpenComm(&h_Com,comm);
if(h_Com != INVALID_HANDLE_VALUE)
{
AfxMessageBox("打开串口成功!");
}
else
{
AfxMessageBox("打开串口失败!");
}
请问我在VB中如何调用OpenComm这个函数?VB中怎么对应char这个数据类型 展开
函数原型:int OpenComm(HANDLE *hCom,char *com_port)
功能说明:打开计算机串口。
输入参数:
●——hCom:串口句柄
●——com_port:串口文件名
调用例程:
char comm[]="COM1";
OpenComm(&h_Com,comm);
if(h_Com != INVALID_HANDLE_VALUE)
{
AfxMessageBox("打开串口成功!");
}
else
{
AfxMessageBox("打开串口失败!");
}
请问我在VB中如何调用OpenComm这个函数?VB中怎么对应char这个数据类型 展开
展开全部
dll调用约定错误 不是数据类型没传对,是VB不支持。
C的函数调用默认是__cdecl ,而VB里面调用API时用的是__stdcall ,两种调用方式清除堆栈的方式不一样。“对方”给的例程是VC下的,很可能函数OpenComm用的是默认的定义,所以C能用,VB不能用。你可以和“对方”联系,说你是在VB下调用,请他重编译下函数。
另:如果修改好以后就按照 ‘书生’的回答,他写的声明是对的,VB里向API传递字符串的时候string类型要用byval方式。
C的函数调用默认是__cdecl ,而VB里面调用API时用的是__stdcall ,两种调用方式清除堆栈的方式不一样。“对方”给的例程是VC下的,很可能函数OpenComm用的是默认的定义,所以C能用,VB不能用。你可以和“对方”联系,说你是在VB下调用,请他重编译下函数。
另:如果修改好以后就按照 ‘书生’的回答,他写的声明是对的,VB里向API传递字符串的时候string类型要用byval方式。
展开全部
Private Declare Function OpenComm Lib "DLL文件名" (ByVal hCom As Long, ByVal ComPort As String) As Long
不一定成功哦,因为VC能调用的DLL,VB不一定能调用,两者调用机制不同。
不一定成功哦,因为VC能调用的DLL,VB不一定能调用,两者调用机制不同。
更多追问追答
追问
byval不行,那个函数参数是地址,
string类型变量也不行,提示“dll调用约定错误”%>_<%
追答
Private Declare Function OpenComm Lib "DLL文件名" (ByVal hCom As Long, ByRef ComPort As Any) As Long
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询