Windows下动态库的创建和使用
程序员文章站
2022-06-03 21:45:43
...
要解决空间浪费和更新困难两个问题,最简单的办法就是把程序的模块相互分割开来,形成独立的文件,而不是将它们静态的链接在一起。简单的讲,就是不对那些组成程序的目标程序进行链接,等程序运行的时候才进行链接,也就是说,把整个链接过程推迟到了运行时在进行,这就是动态链接的基本思想。
怎么创建呢?
1.创建一个新项目mydll
2.添加mydll.h文件和mydll.c
添加如下内容:
#include<stdio.h>
//导入函数 智能在当前项目中使用
//int mySub(int a,int b);
//导出函数 能在项目外使用 __declspec特殊声明
__declspec (dllexport) int mySub(int a,int b);
如何配置静态库呢?
首先右键项目-->属性-->常规-->配置类型-->右边下拉选择动态库-->应用
重新生成解决方案,生成后会生成.lib文件和.dll文件
动态库生成的.lib文件 和 静态库生成的.lib文件不同
动态库中的.lib文件 只会存放一些 导出函数的声明和一些变量的声明,而具体的实现,存放在.dll文件中。
同样我们新建一个项目来测试一下。
将.lib文件和.dll文件和 mydll.h拷贝到该项目下
将那两个文件添加到该项目下,这次可以使用 #pragma comment(lib,"./mydll.lib") (后面添加.lib文件的路径就可以了,它会自动找到.dll)
#include<stdio.h>
#include"mydll.h"
#pragma comment(lib,"./mydll.lib")
int main()
{
int ret = mySub(20,10);
printf("ret = %d\n",ret);
return 0;
}