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

Posted

技术标签:

【中文标题】.LIB 和 .OBJ 文件有啥区别? (Visual Studio C++)【英文标题】:What is the difference between .LIB and .OBJ files? (Visual Studio C++).LIB 和 .OBJ 文件有什么区别? (Visual Studio C++) 【发布时间】:2010-11-24 13:37:50 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

看起来 .lib 文件就像 .obj 文件的集合。有些人还把将几个 .obj 文件转换为 .lib 文件的过程称为存档。在这种情况下,.lib 文件是一盒 .obj 文件,链接器可以平等对待。

【讨论】:

.lib 在 windows 中与.a 在 linux 中相同。

以上是关于.LIB 和 .OBJ 文件有啥区别? (Visual Studio C++)的主要内容,如果未能解决你的问题,请参考以下文章

dll库和lib库有啥区别?

如何查看LIB 文件的接口函数??

jdk1.6.0_02\jre\lib\ext和jre1.6.0_02\lib\ext有啥区别?

文件对象中的rb和r+b模式有啥区别

BeautifulSoup:“lxml”、“html.parser”和“html5lib”解析器有啥区别?

求教 vc++编程高手 :compile 与build 有啥区别和联系