指针的引用类型,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*,没有其他的。
[解决办法]
[解决办法]
[解决办法]
我也碰到同样的问题呀,查了很多资料,据说用Byte来传递,是最可靠的,但我不知道该怎么写?继续关注!
[解决办法]
定义一个字节数组,传递这个字节数组的首地址就可以了。
[解决办法]
不是乱码的问题,是你怎么处理字节数组的问题。
[解决办法]
[解决办法]
参数类型 char* <-> String 的对应是 VB 特地为 API 调用做了额外处理的,自动进行 Unicode-Ansi 转换、自动进行字符串复制,所以这是传递字符串参数最方便的方式。