Sustie

主页 所有文章 文章检索

判断Windows的lib文件是静态库还是动态库的方法

众所周知,在Linux下,动态库的后缀名是.so,而静态库的后缀名则是.a。但是在Windows下,静态库的后缀名是.lib,而动态库则包含两个文件,一个是.dll文件,另一个是.lib文件。下面的表格总结了Linux和Windows的差异:

类型 Linux Windows
静态库 .a .lib
动态库 .so .dll + .lib

下表是Linux使用静态库和动态库的过程:

类型 编译时 运行时
静态库 链接.a文件 无需额外依赖
动态库 链接.so文件 依赖.so文件

下表是Windows使用静态库和动态库的过程:

类型 编译时 运行时
静态库 链接.lib文件 无需额外依赖
动态库 链接.lib文件 依赖.dll文件

所以说在Windows下面,一个.lib文件不一定是静态库,那么,我们如何判断一个.lib文件是静态库还是动态库呢?

我们可以用VS构建工具包中的lib命令来判断,只要输入下面的命令:

lib /list xxx.lib

如果是静态库,那么输出的结果应该是若干.obj文件,如果是动态库,那么输出的结果应该是若干.dll文件。