买了一台设备,厂家附带了一套dll和lib,举两个例子:"a.dll"中的函数例:LONG SetBufferSize(const _BUFFERSIZE* pData);"b.lib"中的函数例:
LONG ReadParamFile(
     LPCTSTR lpszFilePath,
     void* pData,
     DWORD& dwSize,
     CFile* pLogFile = NULL
);请教:
1、对于dll,虽然给的格式是VC++的,但是VB也能调用吧?
2、尝试编写了以下代码,
声明:Declare Function SetBufferSize Lib "a.dll" (ByVal pData As Long) As Long
调用:ret = SetBufferSize(pData)
但是返回值不对,请问哪里不对呢?
3、对于lib,VB能调用吗?如果能,请教高手如何用。

解决方案 »

  1.   

    3。参考静态链接库LIB和动态链接库DLL的区别 创建和示例
      

  2.   

    没找到啊,觉得VB是不是不能调用lib中的函数啊。
      

  3.   

    lib里的是给你引用的,
    工程——〉引用
      

  4.   

    不行啊,我按照这种方式,提示“不能将引用加入到指定文件”。
    能添加的类型库只能是:*.olb;*.tlb;*.dll 这几种格式的。
    而且我看了系统自带的能选择的引用,他们都是存放在.dll文件中的,没有存放在.lib中的呀。
      

  5.   


    我错了,用
    Declare Function SetBufferSize Lib "a.dll" (ByVal pData As Long) As Long
    这种方式
      

  6.   

    这个是调用dll中函数的用法,我也是这么用的,但是得到的返回值是错的。
    另外,还想请教如何调用.lib(静态库)中的函数。
      

  7.   

    谢高手提醒,之前厂家给的都是VC++的例程,我也看不懂,但是也没好意思要。
    这样看来,我得再联系厂家,问问看有没有VB的例程。
      

  8.   

    "a.dll"中的函数例:LONG SetBufferSize(const _BUFFERSIZE* pData);试试:
    Declare Function SetBufferSize Lib "a.dll" (ByRef pData As any) As Long