extern "C" __declspec(dllexport) __stdcall bool   WriteUSB_DATA(int Address,int Count,unsigned char *pDMX1024);
我在VB中的声明如下:
Public Declare Function WriteUSB_DATA Lib "USBDMX1024.dll" (ByVal Address As Integer, ByVal Count As Integer, ByRef pDMX1924 As Any) As Boolean
程序:
Dim Sign As Boolean
Dim Data(1 To 1024) As Byte
For i = 1 To 1024
  Data(i) = 255
Next i
Sign = WriteUSB_DATA(1, 1024, Data(1))
怎么Sign没有返回值呢?大家帮我看一下啊。

解决方案 »

  1.   

    只要你的连接没错,vc中返回的类型和vb定义返回类型要统一。还有字符传入好像是传地址,你的vb定义是bool型,没有定义返回值的类型
      

  2.   

    DLL里面确定没问题吧?怀疑中.....另外,声明改一下:Public Declare Function WriteUSB_DATA Lib "USBDMX1024.dll" (ByVal Address As Integer, ByVal Count As Integer, ByVal pDMX1924 As Long) As Boolean程序:
    Dim Sign As Boolean
    Dim Data(1 To 1024) As Byte
    For i = 1 To 1024
      Data(i) = 255
    Next i
    Sign = WriteUSB_DATA(1, 1024, varptr(Data(1)))
      

  3.   

    你的声明返回值不正确吧,VC中的bool是一个无符号长整形,如果在VB中使用Boolean的话不行,使用Long试试。
      

  4.   

    Public Declare Function WriteUSB_DATA Lib "USBDMX1024.dll" (ByVal Address As long, ByVal Count As long, Byval pDMX1924 As long) As longcall writeUSB_DATA(1,1024,varptr(data(1)))数据类型要对齐