我需要一个数组作为C ++函数的输出参数,然后从VB6调用。我正在使用VS 2015和C ++进行DLL项目。
我找不到一种方法来创建数组并将其返回到C ++代码中(这将是最好的解决方案),所以我试图在VB6代码中创建一个足够大的数组并将其作为参数传递,然后在C ++代码中更改它并再次使用VB6中的结果值。下面是一个带有字节数组的例子,但我的最终函数需要是一个结构数组,所以在字节数组的位置使用字符串的解决方案不起作用。
C ++代码(调用本身有效):
__declspec(dllexport) void __stdcall Test(
char* data, int* len)
{
*len = 3;
data[0] = 1;
data[1] = 2;
data[2] = 3;
}
VB6代码:代码工作,长度参数按预期更改但数据数组不会更改,它仍为零:
Private Declare Sub Test Lib "MyDll.dll" (ByRef data() As Byte, length As Long)
Dim data(10) As Byte
Dim length As Long
Call Test(data, length)
答案 0 :(得分:0)
我找到了一个有效的解决方案here。
这是在VB6中声明和调用函数:
Private Declare Sub Test Lib "MyDll.dll" (ByRef data As Byte, length As Long)
Dim data(10) As Byte
Dim length As Long
Call Test(data(LBound(data)), length)