.LIB和.OBJ文件有什么区别?(Visual Studio C++)

Mic*_*bon 26 c++ linker static-variables static-libraries object-files

我知道.OBJ是编译一个编译单元的结果,而.LIB是一个静态库,可以从几个.OBJ创建,但这种差异似乎只是在编译单元的数量.还有其他区别吗?是相同还是不同的文件格式?

当想知道在链接到最终可执行文件期间是否合并了两个(或更多).LIB中定义的相同静态变量时,我遇到了这个问题.对于.OBJ,变量是合并的.但是在.LIBs中它是一样的吗?

Bar*_*lly 39

.LIB文件是与索引连接在一起的.OBJ文件的集合.链接器如何处理也应该没有区别.


小智 5

似乎.lib文件就像.obj文件的集合.有些人还会考虑将多个.obj文件切换为.lib文件的过程,如Archive.在这种情况下,.lib文件是一个.obj文件框,链接器可以同等对待它.

  • Windows中的`.lib`与linux中的`.a`相同. (2认同)