VB调用DLL的问题
VB调用一个DLL文件中的函数,函数是这样functionXXX(byvalAasint,ByValBasstring)aslong函数的说明是参数B是一个返回的函数,意...
VB调用一个DLL文件中的函数, 函数是这样 function XXX (byval A as int,ByVal B as string) as long
函数的说明是 参数B是一个返回的函数,意思是这个B其实是个返回值,但他却写在了参数里, 请问 VB如何提取这个返回值B?
2楼说的还是有些笼统
他的函数是这样 Delphi写法 B是一个PChar,说明书上要求别的语言必须是字符数组
我在VB里应该如何获取B的值呢?
难道
Dim str() as byte
msgbox XXX(1,str)
然后执行完 str就变成返回值了? 展开
函数的说明是 参数B是一个返回的函数,意思是这个B其实是个返回值,但他却写在了参数里, 请问 VB如何提取这个返回值B?
2楼说的还是有些笼统
他的函数是这样 Delphi写法 B是一个PChar,说明书上要求别的语言必须是字符数组
我在VB里应该如何获取B的值呢?
难道
Dim str() as byte
msgbox XXX(1,str)
然后执行完 str就变成返回值了? 展开
2个回答
展开全部
对于String类型的VB变量,byval传入一个DLL,对于DLL的接收方来说,就是按照引用方式传递的
DLL大多用C语言完成 C语言里:
char * 对应 byval的string
虽然VB里是按值传递,但是DLL里是可以直接修改的
你调完这个DLL以后,看一下B的值就可以看到它应该发生变化了
不明白的请百度HI我,这样的问题我遇到很多了
-----------------
如果是delphi的话,有一点要说明的就是:只有VB里有串的概念,别的语言都使用字符数组来表示,所以VB里的字符串变量实际上是它的地址,所以VB里对字符串用ByVal调DLL,DLL里是可以直接去改这个变量B的内容的,调用完以后B的值也就发生变化了,windows API里很多也是这种写法
DLL大多用C语言完成 C语言里:
char * 对应 byval的string
虽然VB里是按值传递,但是DLL里是可以直接修改的
你调完这个DLL以后,看一下B的值就可以看到它应该发生变化了
不明白的请百度HI我,这样的问题我遇到很多了
-----------------
如果是delphi的话,有一点要说明的就是:只有VB里有串的概念,别的语言都使用字符数组来表示,所以VB里的字符串变量实际上是它的地址,所以VB里对字符串用ByVal调DLL,DLL里是可以直接去改这个变量B的内容的,调用完以后B的值也就发生变化了,windows API里很多也是这种写法
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询