07年最后一次紧急呼救:VB如何调用这个复杂的C++的DLL,先谢谢大家啦。DLL的中函数的参数是结构体,在C++中结构体定义如下:  struct ZT_USBBOARD{
    long lIndex;
    HANDLE hHandle;
    short nCh;
    long lData;
    long* plData;
    long lCode;
  };DLL中的函数定义如下:    long APIENTRY OpenUSB7kC(ZT_USBBOARD* bs)问题:
    1、如何引用参数为结构体的DLL?
    2、结构体中HANDLE类型,在VB中如何定义?
    3、指针类型的变量(如long*),在VB中如何定义?呵呵,小弟第一次学着用VB调用C++ DLL,就遇到那么复杂的情况。最好能给我一个实例代码:Public Type ctrlStruct
    usbIndex As Long
    ....
    '这里如何写????    
End TypePrivate Declare Function OpenUSB7kC Lib ".\Usb7kC.dll" (ByRef pResult As ctrlStruct) As long
'这样写也不知道对不对??
请大家帮帮我,十分感谢!!!

解决方案 »

  1.   

    Public   Type   ctrlStruct 
            usbIndex   As   Long 
            hHandle  as long
            nCh as integer
            lData as long
             plData as long
            lCode as long
    End   Type 
      

  2.   

    C中的long类型应该是Int64吧,VB中没有直接的数据类型可对应,不过可以用Currency代替。
    因为Currency其实是定点小数,所以VB中Currency类型的0.0001对应C中long类型的1,按照这个比率处理就可以了。
      

  3.   


    Public Declare Function OpenUSB7kCLib "Usb7kC.dll" Alias "OpenUSB7kCA" (ByVal lIndexAs Long, ByVal hHandle As long , ByVal nCh   As integer , ByVal lData   As Long, plData   As Long,lCode   As Long) As LongPublic  Type   ZT_USBBOARD
         lIndex       As       Long   
         hHandle      as   long 
         nCh   as   integer 
         lData   as   long 
         plData   as   long 
         lCode   as   long 
    End  Type  
      

  4.   

    上边我写错了Public Declare Function OpenUSB7kCLib "Usb7kC.dll" Alias "OpenUSB7kCLibA" (ByRef   pResult   As   ZT_USBBOARD) As Long
    Public  Type   ZT_USBBOARD
         lIndex       As       Long   
         hHandle      as   long 
         nCh   as   integer 
         lData   as   long 
         plData   as   long 
         lCode   as   long 
    End  Type