12.3 DLL静态加载

特殊说明:版权归个人所有,请勿转载,谢谢合作。

静态链接是将应用程序使用的静态库,在编译时刻直接拷贝到可执行文件中。其中LIB文件为伪地址,如图12.8所示。

  • 图12.8 静态加载原理图

 

在使用静态加载之前,对于刚刚创建的DLL工程需要做一些小小的改动,目的是告诉使用它的工程,使用的计算器算法函数名称及参数列表是什么,具体操作是在“Calc”工程中,点击【File】菜单,选择【New…】项,在新建窗口中选择【C/C++ Header File】项,并在【File】处输入创建的头文件名称,以“Calc”为例,如图12.9所示。

  • 图12.9 创建头文件

 

在头文件中,对计算器算法的各个函数进行声明,代码如下所示:

// 加法
int MyAdd(int nOp1, int nOp2);
// 减法
int MyDec(int nOp1, int nOp2);
// 乘法
int MyMul(int nOp1, int nOp2);
// 除法
int MyDiv(int nOp1, int nOp2);

 

拷贝刚刚创建的头文件“Calc.h”,同时拷贝Debug目录下的“Calc.lib”与“Calc.dll”文件,到“StaticLink”工程目录下,如图12.10所示。

  • 图12.10 拷贝静态链接需要的文件

 

还需要将“Calc.h”与“Calc.lib”文件加载到工程中。在工程列表中,选择【FileView】文件视图,在当前工程上点击鼠标右键,在弹出的菜单中选择【Add Files to Project…】项,如图12.11所示。

  • 图12.11 添加文件到工程

在文件类型处选择【所有文件(*.*)】,并选择“Calc.h”与“Calc.lib”文件后,点击【OK】按钮,如图12.12所示。

  • 图12.12 文件选择

 

添加完成后,就可以在文件视图列表中查看到添加的文件,如图12.13所示。

  • 图12.13 添加后的文件列表

 

在使用DLL之前,需要包含“Calc.h”的头文件,虽然他已经加入到工程之中,但如果不使用头文件引入的方法,是不会识别的。具体实现代码如下所示。

#include <windows.h>
#include <stdio.h>
#include "Calc.h"

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
  char szBuffer[128] = { 0 };				// 临时缓冲区
  int  nOp1 = 10;						// 操作数1
  int  nOp2 = 5;						// 操作数2

  sprintf(szBuffer, "加法:%d\r\n减法:%d\r\n乘法:%d\r\n除法:%d",
    MyAdd(nOp1, nOp2), 
    MyDec(nOp1, nOp2), 
    MyMul(nOp1, nOp2), 
    MyDiv(nOp1, nOp2));

  // 显示操作结果
  MessageBox(NULL, szBuffer, "Dll加载示例", MB_OK);	

  return 0;
}

 

程序执行结果如图12.14所示。

  • 图12.1 程序执行结果

 

 

转载请附上原文出处链接及本声明
李老师的博客 » 12.3 DLL静态加载

发表评论

提供最优质的文章集合

立即查看 了解详情