如何将值作为动态数组从vb传递到c

时间:2015-08-17 12:48:53

标签: c arrays vba vb6

我有以下声明:

Type routineStruct
  man As String * 3
  number As String * 5
End Type

Type vbToC
  sch As String * 4
  routine(0 To 10000) As routineStruct
End Type

vbfun As vbToC

现在我们将这个vbfun作为vbToC从VB发送到C. 现在对于上面的vbToC类型,编译时会出现64K内存限制错误。 因此,我们将动态数组用作 -

Type vbToC
  sch As String * 4
  routine() As routineStruct
End Type

然后分配值

Redim routine(10000)
For loop = 0 To 10000
  .routine(loop).man = value1
  .routine(loop).number = value2
Next

我的问题是上面的动态数组的vbToc声明是对还是不对?如果正确,那么可以使用此动态数组将值从vb发送到c以及如何为每个结构元素接收动态数组的值?

1 个答案:

答案 0 :(得分:0)

在VB6中,您定义的类型为" routineStruct"是无效的。你肯定会收到编译错误。如果你想宣布" man"和"数字"作为数组,语法不正确。您需要使用类似于"例程"的声明。带有数组声明的元素。

此外,您已声明您的类型没有任何访问修饰符。当你这样做时,它将默认为" private。"如果要将VB6 ActiveX DLL导出到类型库以便在C ++中使用,则该类型将不可见,并且无法进行编组。

解决方案是调整您的类型声明以包含正确的VB6语法以及将类型设置为public。本地字符串类型的封送在C / C ++中成为BSTR,你应该没有问题。