从 VB6 调用的 C++ DLL 函数中的输出数组参数
Output array parameter in a C++ DLL function called from VB6
我需要在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)
我在这里找到了一个可行的解决方案。
它是像这样在 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++ 输出数组中的最高元素
- 空指针(为缺少的输出数组调用的 create() 在 create,文件 /home/m/OpenCV/modules/
- C++ 为什么我会得到垃圾输出数组?
- C 默认如何输出数组
- 使用递归输出数组
- 从 VB6 调用的 C++ DLL 函数中的输出数组参数
- 递归函数,用于输出数组的最小数量
- 如何在 c++ 中水平输出数组
- 冒泡排序未正确排序或输出数组值
- 按相反顺序输出数组的元素
- 制作一个排列函数,输出数组中所有可能的排列
- OpenCV (c++)缝合器不写入输出数组
- 创建一个3x3x3阵列.用0到9之间的随机值填充.输出数组.找出3个最小值和3个最大值的输出
- 实现[B,C]=f(A)语法(函数f作用于具有两个或多个输出数组的数组)
- 双指针输出数组参数异常
- SWIG Python C++输出数组给出'unknown type'错误
- 以 XLL 为单位获取调用方定义的输出数组尺寸
- c++:如何从函数接收可变长度的输出数组
- 未定义的符号 输出数组 opencv fedora.