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这个数据类型
展开
 我来答
sailingzyf
2012-04-18 · TA获得超过1330个赞
知道小有建树答主
回答量:860
采纳率:0%
帮助的人:1059万
展开全部
dll调用约定错误 不是数据类型没传对,是VB不支持。
C的函数调用默认是__cdecl ,而VB里面调用API时用的是__stdcall ,两种调用方式清除堆栈的方式不一样。“对方”给的例程是VC下的,很可能函数OpenComm用的是默认的定义,所以C能用,VB不能用。你可以和“对方”联系,说你是在VB下调用,请他重编译下函数。
另:如果修改好以后就按照 ‘书生’的回答,他写的声明是对的,VB里向API传递字符串的时候string类型要用byval方式。
网海1书生
科技发烧友

2012-04-18 · 擅长软件设计、WEB应用开发、小程序
网海1书生
采纳数:12311 获赞数:26229

向TA提问 私信TA
展开全部
Private Declare Function OpenComm Lib "DLL文件名" (ByVal hCom As Long, ByVal ComPort As String) As Long

不一定成功哦,因为VC能调用的DLL,VB不一定能调用,两者调用机制不同。
更多追问追答
追问
byval不行,那个函数参数是地址,
string类型变量也不行,提示“dll调用约定错误”%>_<%
追答
Private Declare Function OpenComm Lib "DLL文件名" (ByVal hCom As Long, ByRef ComPort As Any) As Long
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式