xiangzi 说:
我在vb底下调用zlib.dll中的一个函数compress2
xiangzi 说:
时,需要传递一个int level给compress2
xiangzi 说:
可是,运行的时候每次都说接受的数据不对。ft.我用dll的debug状态跟踪也确实没有接受正确。
xiangzi 说:
你帮我看看?
xiangzi 说:
vb下的申明为:
Private Declare Function compress2 Lib "zlib.dll" (dest As Any, destLen As Any, src As Any, ByVal srcLen As Long, level As Any) As Long
xiangzi 说:
dll中的为:
ZEXTERN int ZEXPORT compress2 OF((Bytef *dest,   uLongf *destLen,
xiangzi 说:
xiangzi 说:
dll中的为:
ZEXTERN int ZEXPORT compress2 OF((Bytef *dest,   uLongf *destLen,
                                  const Bytef *source, uLong sourceLen,
                                  int level));
xiangzi 说:
使用的时候为:
    Dim level As Integer
    level = -1
    result = compress2(TempBuffer(0) , BufferSize, TheBytes(0) , UBound(TheBytes) + 1, level)

解决方案 »

  1.   

    开始怀疑是_cdecl和_stdcall的区别。
    我用stdcall模式从新编译,结果还是不行,请教各位高手了。~~~~~~~~~>_<~~~~~~~~~~
      

  2.   

    Private Declare Function compress2 Lib "zlib.dll" (dest As Any, destLen As Any, src As Any, ByVal srcLen As Long, byval level As long) As Long应该这样声明
      

  3.   

    问题解决了,多谢huangguanshu()
        自己犯昏了。
    to zyl910:
       ulongf:unsigned long far
       Bytef :unsigned char far
       这些都是c里面自定义的类型