头文件(.h)、库文件(.lib)、动态链接库文件(.dll)的关系与环境配置
第三方库
一些常用的函数、类等会被封装打包成库(例如opencv),以供开发人员使用。为了能正确调用所需的库,需先告知所用的编程开发工具(例如Visual Studio)和操作系统在哪里寻找所需的库,这就是所谓的配置第三方库。
一、基本概念
- 在程序的源文件(如 .c 和 .cpp 文件)编辑阶段,为了使用第三方库,一般会在编辑器中使用 #include 指令来包含库的头文件( .h或 .hpp 文件),即需要告知 Visual Studio(编程工具)第三方库的头文件的位置。——配置附加包含目录路径(一般是库目录下/include文件夹)
- 源程序经过预处理后需要编译成目标汇编程序。在编译阶段,编译器会根据头文件中声明的函数、类等信息查找该函数或类的实现文件(如 .lib 、.dll文件),即需要告知 Visual Studio 第三方库中的函数、类等实现文件的位置。——配置库目录路径
- 源文件经过编译后会生成一系列目标文件(如 .o 文件),然后链接器将目标文件以及库文件链接起来形成最终的可执行文件(如 .exe 文件),即需要告知链接器具体需要链接第三方库中的哪些库文件。一般第三方库会包含很多模块,可以只选择自己需要的模块的库文件,这样会加快编译调试速度。——配置附加依赖项,即工程所需lib文件
- 链接器在链接目标文件并生成最终的可执行文件时,包括静态链接和动态链接两种方式。静态链接就是将所用到的第三方库的内容包含进程序的可执行文件中(如 .exe 文件),这样在没有安装所需库的相应功能的计算机上也可以直接运行该程序(此时.lib文件包含了实际执行代码、符号表等等),缺点是,如果用到的库的内容比较大的话,最终程序的可执行文件相应的也很大。动态链接就是不将所用到的第三方库的内容包含进程序的可执行文件中,(此时lib文件只包含了地址符号表等,真正的执行代码位于动态库即dll文件中,而dll文件只在运行期才会被调用,库中的函数和数据并不复制到可执行文件中)。这时就需要计算机上装有第三方库,并正确配置计算机的环境变量,以便程序运行时能正确找到所需的动态链接库(即.dll和.lib文件必须随应用程序一起发行)。——配置环境变量,即dll文件所在路径,一般是/bin目录下
二、环境配置
1 包含目录配置
2 库目录配置
3 附加依赖项配置
4 环境变量配置




