解决方案 »

  1.   

    把这个sLibPath = String(255, vbNullChar) 去掉试试
      

  2.   

    单从你的这段代码来说:
    ① 画蛇添足
    sLibPath = String(255, vbNullChar)
    上面这句,没有用处,只是“白做了一系列操作”。
    ② 不够简练,也有点多余
    sLibPath = App.Path
    sLibPath = sLibPath & "\1.dll"
    这两句,用一句就行了:
    sLibPath = App.Path & "\1.dll"
    ③ 语法错误,根本就不符合“规范”
    Public Declare Function Test Lib sLibPat ( ) As Long
    这一行,怎么能写在过程之内?
    它只能写在每个“模块代码”的开头部分(通用->声明)的声明节中。
      

  3.   

    在标准模块中声明 Public Declare Function Test Lib "1.dll" () As Long 即可。当前应用路径是系统查找 DLL 的缺省路径之一。如果声明在 Form 的通用段,声明为 Private Declare Function Test Lib "1.dll" () As Long 。记住,调试的时候,双击工程文件启动。否则当前应用路径被认为是 VB 安装路径。
      

  4.   

    网上后来看到的是VB的 调用Lib的时候不能在变量的  必须是常量的字符串  sLibPat = "D:\1.lib"
    Public Declare Function Test Lib sLibPat () As Long   //这个会报错 Public Declare Function Test Lib "D:\1.lib" () As Long // 这个就不会报错
    最后,我只能把库的目录加到环境变量里面去,使用 Public Declare Function Test Lib "1.lib" () As Long 访问。我的程序的初衷,是库可能放在不同的目录下面,不能每次修改库的位置就修改程序。所以想用变量。