读书人

指针的引用类型VB中该怎么传参和输出

发布时间: 2012-03-24 14:00:46 作者: rapoo

指针的引用类型,VB中该如何传参和输出显示?
DLL是在VS2010下编译的,VB的开发环境是VB6.0。

C/C++ code
//(1)DLL导出的函数原型int funtest(unsigned char &* pData,  //地址的引用unsigned char &** ppData); //地址的地址的引用


VB code
''''''(2)VB用下面的方式声明是否可以?'声明接口函数(传入的参数声明为引用类型)'''Declare Function funtest Lib "test.dll" (Byref pData AS Long, Byref pData AS Long);Declare Function funtest Lib "test.dll" (Byref pData AS string, Byref pData AS string);''''''(3)调用DLL中接口函数Dim paraAAA AS string * 1024 '''申请空间Dim paraBBB AS string * 1024 '''申请空间Dim retValure '''返回值retValure = funtest(paraAAA, paraBBB) '接收DLL返回的字符串'''''从地址中把字符串获取出来是否要用内存拷贝???print paraAAA, paraBBB '打印字符串


[解决办法]
不太理解你的原型。试试:

Declare Function funtest Lib "test.dll" (Byref pData AS Byte, Byref pData AS Byte) As Long;

Dim paraAAA(1023) AS Byte '''申请空间
Dim paraBBB(1023) AS Byte '''申请空间
Dim retValure As Long '''返回值
Dim strParaA As String
Dim strParaB As String

retValure = funtest(paraAAA(0), paraBBB(0)) '接收DLL返回的字符串
strParaA = StrConv(paraAAA, vbUnicode)
strParaB = StrConv(paraBBB, vbUnicode)


[解决办法]
应该将参数原型定义为 char*,这样 VB 中可以直接声明为 String 参数。
你可以去看 Windows API,全是 char*,没有其他的。
[解决办法]
探讨
应该将参数原型定义为 char*,这样 VB 中可以直接声明为 String 参数。
你可以去看 Windows API,全是 char*,没有其他的。

[解决办法]
探讨
引用:
应该将参数原型定义为 char*,这样 VB 中可以直接声明为 String 参数。
你可以去看 Windows API,全是 char*,没有其他的。

======================
C++用Char * 传出参数
VB用string就可以接收参数吧?

[解决办法]
我也碰到同样的问题呀,查了很多资料,据说用Byte来传递,是最可靠的,但我不知道该怎么写?继续关注!
[解决办法]
定义一个字节数组,传递这个字节数组的首地址就可以了。
[解决办法]
不是乱码的问题,是你怎么处理字节数组的问题。
[解决办法]
探讨
引用:
应该将参数原型定义为 char*,这样 VB 中可以直接声明为 String 参数。
你可以去看 Windows API,全是 char*,没有其他的。

可以传递地址啊?Byref

[解决办法]
参数类型 char* <-> String 的对应是 VB 特地为 API 调用做了额外处理的,自动进行 Unicode-Ansi 转换、自动进行字符串复制,所以这是传递字符串参数最方便的方式。

读书人网 >VB

热点推荐