vb调用vc++编译的dll问题,高分请求解答,急用!!!!!

jinjianhui 2003-09-26 11:28:51
我用vb6调用vc++的dll中的函数,实现IC卡信息的读取。
dll中有一函数接口说明如下:

显示字符串
int Display(int ComPort,unsigned char *XSbuffer,int DelayTime)
入口参数:
XSbuffer:显示字符(8字节,ASCII码)
DelayTime:延时时间(以秒为单位,最大值为255秒)
出口参数:无
返回值:
0:成功
7:传入参数错误(传入的字符不符合要求)
说明: Xsbuffer中的字符必须为以下19种ASCII码字符:
空格, '-' , '.' , '0'~ '9' , 'A' , 'b' , 'C' , 'd' , 'E' , 'F'。

现请问:在vb中怎样声明…………………………

我的声明方法如下:
Private Declare Function Display Lib "ceshi.dll" _
(ByVal ComPort As Long, ByRef XSbuffer As Byte, ByVal DelayTime As Long) As Long

调用方法如下:
Dim Ceshi2() As Byte
Ceshi2 = StrConv("b", vbFromUnicode)
temp = 100
temp = Display(int_Port, Ceshi2(0), 10)

但是一直提示“参数错误”

请各位帮忙,十万火急,分不够可再给!
如有必要,请联系:yaohuahui@163.com qq:7310026



...全文
30 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
佛的光辉 2003-09-27
  • 打赏
  • 举报
回复
Private Declare Function Display Lib "ceshi.dll" _
(ByVal ComPort As Long, ByVal XSbuffer As string, ByVal DelayTime As Long) As Long
rainstormmaster 2003-09-27
  • 打赏
  • 举报
回复
在vb中用strptr函数获得字串地址:

Private Declare Function Display Lib "ceshi.dll" _
(ByVal ComPort As Long, XSbuffer As LONG, ByVal DelayTime As Long) As Long

调用方法如下:
Dim s As String
s = StrConv("b", vbFromUnicode)
temp = 100
temp = Display(int_Port, StrPtr(s), 10)
laolux 2003-09-27
  • 打赏
  • 举报
回复
ByRef XSbuffer As Byte是对的吧!
是不是动态数组Ceshi2()还没定义维数就用了Ceshi2(0)。
Gelim 2003-09-27
  • 打赏
  • 举报
回复
还有就是你vc的dll的函数要加__stdcall(提供给vb调用用的~!)!
boywang 2003-09-26
  • 打赏
  • 举报
回复
第二个参数是指针。定义成byte当然错了。应该定义成long型。
aha99 2003-09-26
  • 打赏
  • 举报
回复
对啊,调用api最重要的就是参数了,类型一定要对,否则错误都是莫名其妙的,很多时候vb都要重装。只能自己多注意。
jlum99 2003-09-26
  • 打赏
  • 举报
回复
是啊,型参啊,是个指针.换long

1,485

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧