我有以下声明:
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以及如何为每个结构元素接收动态数组的值?
答案 0 :(得分:0)
在VB6中,您定义的类型为" routineStruct"是无效的。你肯定会收到编译错误。如果你想宣布" man"和"数字"作为数组,语法不正确。您需要使用类似于"例程"的声明。带有数组声明的元素。
此外,您已声明您的类型没有任何访问修饰符。当你这样做时,它将默认为" private。"如果要将VB6 ActiveX DLL导出到类型库以便在C ++中使用,则该类型将不可见,并且无法进行编组。
解决方案是调整您的类型声明以包含正确的VB6语法以及将类型设置为public。本地字符串类型的封送在C / C ++中成为BSTR,你应该没有问题。