我用  VC 写了DLL
int APIENTRY SendData(BYTE *data)在  中这样声名
Private Declare Function SendData Lib "**.dll" (ByRef bData As Byte) As Long使用的 时候  出错了
dim aa() as byteaa(0) = &HFF
aa(1) = &HFCSendData(aa)之后程序就over 了

解决方案 »

  1.   

    SendData(aa)这一句应该都无法编译通过呀,因为你API中声明不是数组,而aa是数组型。你DLL中BYTE *data 表示要求传入Byte型数据的指针。那么按你在VB中的声明(ByRef bData As Byte),应该调用SendData(aa(0))。如果你的程序错了,那表示你的DLL中出了严重的错误。
      

  2.   

    应该使用:SendData(aa(0))VB的数组实际上是:SAFEARRAY指针
    而C语言数组实际上是:指向首元素的常量指针Byref的语义是传送变量的地址,所以SendData(aa(0))是将数组首元素地址传了过去