gpt4 book ai didi

c++ - 从 VB6 调用的 C++ DLL 函数中的输出数组参数

转载 作者:太空宇宙 更新时间:2023-11-04 12:56:11 24 4
gpt4 key购买 nike

我需要一个数组作为 C++ 函数的输出参数,然后从 VB6 调用该函数。我正在为 DLL 项目使用 VS 2015 和 C++。

我找不到创建数组并在 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)

最佳答案

我找到了可行的解决方案 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)

关于c++ - 从 VB6 调用的 C++ DLL 函数中的输出数组参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46592874/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com