已知:
EXE文件位置: d:\ATT\Attend.exe
Dll文件位置: d:\ATT\Dll\JBC_attend.dll我用以下语句为何声明失败呢?Public Declare Function SetDoorTimeTable Lib "\DLL\JBC_attend.dll" 

解决方案 »

  1.   

    Public Declare Function SetDoorTimeTable Lib "d:\ATT\DLL\JBC_attend.dll"
      

  2.   

    Public Declare Function SetDoorTimeTable Lib "d:\ATT\DLL\JBC_attend.dll"
    =========================================================================
    注意:在发布 EXE 文件时用户不一定是安装在 d:盘。可能是 C:\ATT\ 或 E:\ATT\。用绝对路径肯定是不行的。
      

  3.   

    怎么都问这个问题呢,老回答同一个问题就没意思了……
    如果这个函数参数不多的话,最好使用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
      

  4.   

    1、用楼上的方式,产生错误窗口 "... 内存不能为 read "
    2、就算可以运行,若参数多一点。还是行不通。不知是否有更好的方式?