VB调用一个VC编译的DLL文件,在声明中只能用绝对路径,有没有什么办法可以用相对路径?
   声明中好象不支持相对路径。
   把DLL文件放在system32目录里面的不得分!!!

解决方案 »

  1.   

    哈,你放在程序同一个目录就可以了阿或者你用LoadLibrary之类的显式调用
      

  2.   

    可以在运行时用App.Path得到绝对路径,然后用LoadLibrary
      

  3.   

    我觉得不太好吧...呵呵,即时有也不太好!DLL注册之后,放在任何目录都行,我想柱主的意思是不想放在程序的主目录下吧?
      

  4.   

    我用的是:在模块中用
      Declare Function AD_Open Lib "ADDLL.dll" Alias "?AD_Open@@YAHXZ" () As Long声明的
    addll.dll前不能加相对路径
    我还不会用Loadlibrary,能不能举个例子,我要用DLL文件里的函数
      

  5.   

    为什么你一定要用路径呢?将dll放在文件目录下或系统目录下再在程序中声明就可以了
    还管什么路径
      

  6.   

    这是一个loadlibrary的使用例子'Example Name:Call Procedure
    Create a new project and add this code to Form1
    Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
    Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long
    Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long
    Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Any, ByVal wParam As Any, ByVal lParam As Any) As Long
    Private Sub Form_Load()
        On Error Resume Next
        'KPD-Team 1999
        'URL: http://www.allapi.net/
        'E-Mail: [email protected]
        'We're going to call an API-function, without declaring it!
        Dim lb As Long, pa As Long
        'map 'user32' into the address space of the calling process.
        lb = LoadLibrary("user32")
        'retrieve the address of 'SetWindowTextA'
        pa = GetProcAddress(lb, "SetWindowTextA")
        'Call the SetWindowTextA-function
        CallWindowProc pa, Me.hWnd, "Hello !", ByVal 0&, ByVal 0&
        'unmap the library's address
        FreeLibrary lb
    End Sub
      

  7.   

    用 CallWindowProc 调用 DLL 函数地址,如果行参超过四个怎么办?好像无能为力了吧?
      

  8.   

    如果你学过C的话,你会知道在C中即使是字符,实际上都可以用整数类型来表示,而字符串就是字符数组。基本数据类型大都可以用或者可以接近等同的整数类型表示,所以我认为传递参数数组指针可行。只不过在VB中实际处理起来会很麻烦,尤其是还要处理各种结构,虽然它们也是由基本类型构成的。
      

  9.   

    C 学过就是 tmd MSDN 都是 E 文,看的偶实在不爽,所以后来不折腾了...  如果行参是 Function(String,Long,Byte,Integer ........ )能传数组搞定?学习 ing...
      

  10.   

    不用关心路径,将dll放在你的exe文件所在路径下或系统目录下,声明时不带路径就可以了