看过许多有关DLL的文章,但很少有关于调用方面的具体实例,高手能否讲讲关于调用的实现。最好能给一个简单的在MFC中调用的源代码。

解决方案 »

  1.   

    比如在我的MyDll.dll中有个BOOL型的函数叫StartHook(),象下面这样就可以正确使用它:
      typedef BOOL (CALLBACK *StartHook)(); 
      StartHook instkbhook;
      HINSTANCE hinstDLL = LoadLibrary((LPCTSTR) "MyDll.dll"); 
      instkbhook = (StartHook)GetProcAddress(hinstDLL, "StartHook"); 
      instkbhook();
      

  2.   

    1,先新建一个工程,
    Type 选 MFC AppWizard(dll),输入工程名称,例如“dlldll”。
        2,在 “What type of DLL would you like to create?”处选择:
    Regular DLL useing shated MFC DLL,全部用缺省值。点“Finish”。
        3,为了简单起见,我只讨论最简单的情况,大家可以由此推及其他。
    设该 DLL 只有一个函数:msg(),只输出一句给定的信息。
    三个主要的文件如下:// 文件一:dlldll.h : main header file for the DLLDLL DLL
    //
    #ifndef __AFXWIN_H__
            #error include 'stdafx.h' before including this file for PCH
    #endif
    void msg(HWND hWnd,CString str);
    // 文件二:dlldll.cpp : Defines the initialization routines for the DLL.
    //
    #include "stdafx.h"
    #include "dlldll.h"#ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif
    void msg(HWND hWnd,CString str)
    {
            MessageBox(hWnd,str,"DLL Runing!",MB_OK);
    }
    ; 文件三:dlldll.def : Declares the module parameters for the DLL.LIBRARY      "DLLDLL"
    DESCRIPTION  'DLLDLL Windows Dynamic Link Library'EXPORTS
        ; Explicit exports can go here
            msg @1
    ;       ~~~~~~~此句要自己加,必须的。    4、编译连接后,生成文件:dlldll.lib、dlldll.dll。
    还有一个有用的文件是:dlldll.h。二:如何使用 DLL:
        1、新建立一个工程,比如一个对话框 usedll。
    全部用缺省值。    2、用 ClassWizard 建立 OnOK() 消息:
    void CUsedllDlg::OnOK() 
    {
            msg(m_hWnd,"OK");
    }同时在该文件“usedlldlg.cpp”的头部加入如下语句:
    #include "dlldll.h"
    别忘了把“dlldll.h”、“dlldll.dll”、“dlldll.lib”
    三个文件拷贝到你的目录中。    3、做如下的设置:
    Build \ Settings... \ 选 link 页 \ Category 为 Input \
    Object/library modules 为 d:\projects\usedll\dlldll.lib
    就是你的 dlldll.lib 所在的完整路径和文件名称。
    如果和你的不同,请自行修改。
    “OK” 它。
        4、编译连接,运行,点“OK”按钮时,应该弹出一个对话框:
    标题为“DLL Runing!”,有个“确定”按钮和“OK”的信息。
      

  3.   

    CQP(悄悄的我走了,正如我悄悄的来) 说的有理
      

  4.   

    guanxg(紫色天使)说得是动态链接lib库的方法;CQP(悄悄的我走了,正如我悄悄的来)说得是创建DLL工程的步骤,如何在def文件中导出函数,以及静态链接lib库的方法;都好...
      

  5.   

    如果那个dll是你自己写的话,你一定有dll的".h"文件了。
    将".h"文件和lib文件包含到你的工程中,你就象调用自己的类函数一样调用吧。
    是不是很方便。
      

  6.   

    我编译不过去,出现下面的错误。
    lldll.def : error LNK2001: unresolved external symbol msg
    Debug/dlldll.lib : fatal error LNK1120: 1 unresolved externals
    LINK : fatal error LNK1141: failure during build of exports file
    Error executing link.exe.
      

  7.   

    还有一个问题,在VC中能否调用VB中编写的DLL文件,大家有没有实际实现过该类实例啊?~~