一、lib文件
lib文件是静态链接库文件,其中存放的是函数调用的信息,在windows操作系统中起到链接程序和函数的作用。其意义在于代码重用,程序员将常用的功能写成函数,保存为lib文件,在以后编程要实现这些功能的时候,就不需要在重新编写代码,而是直接调用写好的lib文件,这很大程度上减轻程序员的负担。在代码编译时,根据编译方式的不同,lib的作用也有所不同。
1.静态编译
静态编译将导出声明和实现都放在lib中。编译后所有的代码都被嵌入到宿主程序。静态编译的优点就是编写出来的程序不需要调用dll和载入函数,直接可以当成程序的一部分来使用。静态编译的缺点也是显而易见的,使用静态编译的程序体积比动态编译大,原因是函数的实现被嵌入为程序的一部分。
2.动态编译
动态lib文件相当于一个C语言的头文件,是函数导出部分的声明,而不将实现过程嵌入到程序本身中,编译后只是将函数地址存在宿主程序中,运行到调用函数时,调用dll并载入函数来实现函数的具体操作。用编译器专门生成dll文件时,同时也会生成一个lib文件,这个文件就是动态的lib文件,其作用就是起到链接dll的作用。
二、与dll文件的区别
1. lib是编译时需要的,dll是运行时需要的。如果要完成代码的编译,有lib就够了。如果要使动态连接的程序运行起来,有dll就够了。
2. 一般的动态库程序有lib文件和dll文件。lib文件是必须在编译期就要连接到应用程序中的,而dll文件是运行期才会被调用的。如果有dll文件,那么对应的lib文件一般是一些索引信息,具体的实现在dll文件中。如果只有lib文件,那么这个lib文件静态编译出来的,索引和实现都在其中。静态编译lib文件有好处:给用户安装时就不需要在挂动态库了。但也有缺点,就是导致应用程序比较大,而且失去了动态库的灵活性,在版本升级时,同时要发布新的应用程序才行。
3.lib文件注重代码重用,而dll文件注重代码共用。