将外部库导入VS项目(opencv库为例)
作用:它不包含可执行代码,而是包含了函数导出的索引和名称,以及对应的DLL文件中的位置信息,帮助链接器在编译时将外部引用与DLL中的实际函数链接起来。如图,把附加包含目录添加 include文件夹的路径(Addition文件夹是我自己建的,建议把想要添加的库放到项目文件夹下),这里就相当于是能使得代码中,找到要包含的文件。应用:开发者在编译链接自己的程序使用DLL时,需要将这个LIB文件包含在链接
外部库的结构
这里以opencv库为例。opencv是一个开源的计算机视觉库,里面涵盖很多图像处理和矩阵运算的函数和类。
下载完opencv库之后,里面有三个文件夹。
bin
这个文件夹里主要是编译之后的二进制文件,包括exe(可执行文件),dll(动态库), pdb(程序信息文件)
include
主要是opencv文件夹,打开之后,发现主要是一些.h和.hpp类型的文件,即函数的声明。
hpp(Header Plus Plus)头文件,顾名思义就是 .h 文件加上 .cpp 文件,在 boost 开源库中频繁出现,其实就是 .cpp 实现代码混入 .h 文件当中,定义和实现都包含在同一个文件里。
lib
lib文件夹里是代码的源文件,以及.lib文件。
这里先详细说明下每一种文件的功能:
1. dll文件(Dynamic Link Library)
作用:DLL文件包含了可被多个程序共享的代码和资源。与静态库不同,DLL文件在运行时被载入到内存中,可以由多个不同的应用程序访问。
应用:减小程序体积、节约内存、模块化程序设计等。
2. lib文件
与DLL关联的LIB文件,通常被称为导入库(Import Library)。
注意,静态库的文件后缀也是.lib,但是两者的功能很不同。作用:它不包含可执行代码,而是包含了函数导出的索引和名称,以及对应的DLL文件中的位置信息,帮助链接器在编译时将外部引用与DLL中的实际函数链接起来。
应用:开发者在编译链接自己的程序使用DLL时,需要将这个LIB文件包含在链接器的输入中,以确保程序能够在运行时找到并调用正确的DLL中的函数。
3. pdb文件(Program Database)
作用:存储程序编译时生成的调试信息,文字如函数名、变量名和行号等。使得开发者在调试程序时可以进行源代码级的调试。
应用:非常关键的调试工具,用于程序崩溃分析、性能分析等。
VS的配置
首先在这个地方右键,打开属性。
如图,把附加包含目录添加 include文件夹的路径(Addition文件夹是我自己建的,建议把想要添加的库放到项目文件夹下),这里就相当于是能使得代码中,找到要包含的文件。
$(SolutionDir)\Addition\opencv\include
然后在链接器的常规,把libc文件夹的路径填入附加库目录。
点击输入,把lib导入库的名称填入附加依赖项。(因为前面附加库目录填了lib文件夹的路径,所以这里只填名字,会在附加库目录里找)
最后把dll文件复制到项目的exe文件同一文件夹下。导入就完成了。
代码中要包含相应的文件头和名字空间。
更多推荐
所有评论(0)