65.9K
CodeProject 正在变化。 阅读更多。
Home

DLL很简单。第一部分

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.49/5 (128投票s)

2004年9月10日

2分钟阅读

viewsIcon

187195

downloadIcon

2637

如何创建DLL并使用它们。

Sample screenshot

引言

有些程序员认为DLL很复杂,但实际上它们就像EXE一样。 但是我见过一些程序员不会构建DLL。 有多种方法可以创建DLL。 对于与exe一起使用,最简单的方法是“隐式链接”。 这样,我们需要DevStudio生成的.LIB文件。 下面,我们创建一个DLL,然后将其与exe一起使用。 在DLL内部,我们计算(乘)从exe发送的两个数字。 实际上,exe是“发送者/接收者”,DLL是“计算器”。

如何构建MFC DLL?

  1. 运行 VC++。
  2. 选择:文件 > 新建。
  3. 创建“MFC AppWizard (DLL)”(例如:MyFirstDll)。
  4. 在文件顶部声明
    //
    #define DLLEXPORT __declspec(dllexport)
    //
    

    __declspec(dllexport) 的目的是将“导出指令”添加到目标文件。 因此,您不需要.DEF文件。 为了使代码更具可读性,为 __declspec(dllexport) 定义一个宏:DLLEXPORT

  5. 现在对于您要导出的每个函数,在它之前输入:“DLLEXPORT”,像这样
    DLLEXPORT int Multiply(int ParOne,int ParTwo) 
    { 
       int Mlt=ParOne*ParTwo; 
       return Mlt; 
    } 
  6. 按“构建”按钮。
  7. 从“烤箱”中取出DLL!!

    请注意,链接器还会构建一个“导入库”,其DLL名称相同,但具有.lib扩展名。

如何使用MFC DLL?

  1. 运行 VC++。
  2. 选择:文件 > 新建。
  3. 创建“MFC AppWizard (exe)”。
  4. 选择“基于对话框”。
  5. 选择:项目 > 添加到项目 > 新建 > C/C++头文件。
  6. 命名文件,例如:Imports。
  7. Imports.h中声明
    //
    #define DLLIMPORT __declspec(dllimport) 
    //

    __declspec(dllimport) 的目的是将“导入指令”添加到目标文件。 为了使代码更具可读性,为 __declspec(dllimport) 定义一个宏:DLLIMPORT

  8. 在它之后输入
    DLLIMPORT int Multiply(int ParOne,int ParTwo);

    这是您在DLL中定义的相同函数。 在这里,它被引入为“导入函数”。 但是,对于当前项目而言,它是无法识别的,我们必须为链接器解析它。

  9. 将先前项目中 release 或 debug 文件夹(取决于当前项目设置)中的.lib文件复制到当前目录项目,因为它必须与exe链接。 在.lib文件(相同的导入库)内部,存在有关DLL的导出函数的信息。
  10. 返回VC++环境,选择:项目 > 设置 > 链接(选项卡)。
  11. 在“对象/库模块:”中键入 [先前项目的.lib文件]。 例如,MyFirstDll.lib。 然后按“确定”。 它将解析外部链接。 这里是“int Multiply(int ParOne,int ParTwo);”函数。
  12. 因为我们打算在...Dlg.cpp文件(例如SimpleDllDlg.cpp)中使用该函数,所以在文件顶部键入
    //
    #include "Imports.h"
    //
  13. 现在您可以像这样使用DLL的导出函数了
    void CDllFunDlg::OnMltply() 
    { 
       UpdateData(TRUE); 
       m_Result=Multiply(m_ParamOne,m_ParamTwo); 
       UpdateData(FALSE); 
    }
© . All rights reserved.