动态库(.dll)的创建与使用———VS编译器实现
一、动态库的概念
①概念:动态库链接时不复制,程序运行时由系统动态加载到内存,供程序调用。而且系统只加载一次,可以被多个程序共用。
②特点:
- 动态函数库在编译的时候并没有被编译进目标代码中,需要用到相应的功能,代码才会被调用到程序中,节约内存
- 动态库的改变,程序也会跟着动态变化,升级更新比较方便
二、VS编译器下动态库的创建
提示:
- 动态库被其它程序调用,需要动态库提供相应的接口
- 提供接口的方法是:在向外界提供的接口前加上代码_declspec(dllexport)
- 动态库编译后会生成.dll与.lib两个文件
- 不写_declspec(dllexport)声明的将不能被外界程序调用
方法:
- 一个项目建议完成后,在属性中将配置类型改为动态库(.dll),并生成解决方案
- 在项目路径的上一路径Debug文件夹下会生成一个.dll文件与.lib文件
VS编译器下动态库的调用
动态库的调用分为三步曲,建议一个工程后:
- 将.dll与.lib与.h文件放在工程的同目录下
- 在代码中导入头文件,解决资源方案管理器中也加入头文件
- 调用动态库:分为显示调用和隐式调用
显示调用:
//在代码中加入,前提:工程文件夹下含有.lib文件
#pragma comment(lib,"动态库.lib")
或者在解决资源方案管理器中添加.lib文件:资源文件——>添加现有项(动态库.lib)
隐式调用:
- 设置包含目录:属性==>配置属性==>VC++目录==>包含目录(填.h所在文件路径)
- 设置库目录:属性==>配置属性==>VC++目录==>库目录(填.lib所在路径)
- 设置附加依赖项:链接器==>输入==>附加依赖项==>添加.lib的名称(动态库.lib)
注:如果工程下已经包含了.h与.lib文件,包含目录和库目录可以不设置(建议设置),但附加依赖项必须设置
但是如果工程下不包含.h与.lib文件,就要设置.h与.lib所在的路径
四、总结
以上即为动态库创建于调用的所有内容
如有疑问,Q:1286550014