要在VC中调用一个VB写的DLL,其中一个个接口参数是DLL中自定义的结构。
能否实现?是否要先在VC中定义同样的结构?该结构是作为public类型定义的。附:VB应用程序中这样传递参数:
dim obj as mycom.class1
dim arr() as obj.ftype
dim i as integer
set obj=new mycom.class1
i=obj.getSubMenu(arr)VB Dll中的函数接口是这样定义的:
public Function getSubMenu(byref arr() as ftype) as integer
  '..................
End Function
Public Type ftype
 intID as integer '唯一编号
 intSeqID as integer  '顺序号
 intLevel as integer '级别
 strName as string  '名称
end type

解决方案 »

  1.   

    据我所知
    vb的string这个类型用在结构中在c中蛮难传递的也许下面的办法可以
    c中首先定义数组元素的类型
    typedef ftype_t
    {short intID;
     short intSeqID;
     short intLevel;
     VARIANT strName;
    } ftype;然后将参数arr说明成VARIANT
    VARIANT arr;再将arr设置为数组,定义好维数(1)、上下界,
    类型用
    VT_ARRAY|VT_BYREF|VT_UI1 ??
    然后生成多个ftype类型的变量,将arr的每个元素指向这些变量
    每个变量中的strName再分配VT_BSTR类型的值和存储空间感觉传结构的数组好复杂,从来没有试过
      

  2.   

    吓倒了,这么复杂吗?如果结构中没有string,是不是就容易传递了一些?
      

  3.   

    结构中要是没有string的话会相对容易些
    只要少一层对string的VARIANT的包装