众所周知,出现.lib, .dll这种文件的原因是为了保护源代码,这个就不细说了。
用OpenCV的开源库来举个例子看一下就知道了:
bin文件夹里面放的都是dll文件;
lib文件夹里面放的都是伴随dll文件的动态lib文件;
staticlib文件夹里面放的才是真正的静态lib文件,和dll文件是独立的;
所以可以看出,lib文件是有静态lib和动态llib之分的。
第一部分:静态lib文件,动态lib文件和dll文件的区别:
1. 静态lib文件
上一篇文章讲过如何生成并调用lib文件,其实那个使用“static Library”选项生成的lib文件就是静态lib文件。我们已经知道,在调用这种类型的lib文件的时候,只需要配置好头文件.h的路径和库文件.lib的路径,自己的程序就可以正确加载这些第三方代码为自己所用。这是因为:
静态lib文件实际上就是任意个obj文件的集合,而obj文件就是cpp文件编译之后产生的一种文件,一个cpp文件编译之后只会产生一个obj文件,而多个obj文件