1.简要介绍
①C++中代码有以下三种分发方式:
源码:在工程中需包含引用工程的源文件(.cpp)和头文件(.h),这种方法会导致工程较为庞大。
动态库:只需包含引用工程的dll文件即可,引用工程的头文件和lib库文件可选,通常都会带上。
静态库:只需包含引用工程编译生成的lib文件和头文件,工程看起来较为清爽简洁。
②动态库和静态库的区别
两者各有优缺点,区别如下图:
静态库:当存在a.exe,b.exe和c.exe这三个应用程序模块中都需使用同一个lib库时,会在内存中有多份重复的代码,导致链接时间较长。
动态库:当存在a.exe,b.exe和c.exe这三个应用程序模块中都需使用同一个lib库时,在内存中仅有一份重复的代码。
③执行程序的过程:
常见使用问题:
error C3861:“Add”:找不到标识符,通常是未包含引用函数存在的头文件。
error LNK2019:无法解析的外部符号,通常是引用的静态库lib文件存在问题。
由于找不到DLL.dll文件,通常是当前工程找不到引用工程的动态库dll文件,通常会把引用的dll文件拷贝到当前工程目录下。
2.如何使用两种库
①静态库有两种方法:
a.在工程中包含引用工程的头文件和库文件(不推荐使用,不够整洁)
#include "D:\\chenwenxin\\chaofei.h"
#pragma comment(lib,"D:\\chenwenxin\\chaofei.lib")
b.选择项目名->右击属性->分别在C++和链接器中加入include目录和lib目录,再在链接器的输入项中增加lib文件。(推荐)
②动态库的使用:
同①中的b方法,再将引用工程的dll文件拷贝到当前工程的目录下。