静态 .lib 文件如何相互链接?

5
例如,如果我有一个依赖于lib Blib A,那么当我编写一个依赖于lib A的程序C时,我需要链接lib Alib B还是只需要链接lib A

这可能很有用 http://stackoverflow.com/questions/15973153/change-in-static-library-used-by-other-static-library - Kadir Erdem Demir
需要注意的是,库之间可以存在(但不应该存在)循环依赖。由于它们都被放入一个可执行文件中(大块头),这对于“链接器”来说并不是问题(除了在Linux下编译时需要做一些技巧)。因此请记住,编译系统不能保护您免受此类问题的影响。 - Red XIII
2个回答

5

静态库不会被链接。要注意的是创建静态库的工具并不是连接器——在类Unix平台上是ar(归档程序),而在使用MS工具链时是lib(图书管理员)。这是处理静态库和链接时需要记住的重要一点。

这也应该回答了你的问题。除非A的作者采取了显式的额外步骤来将B的内容放入A中,否则你需要同时链接AB


1

需要另一个库(B)的库(A)将该库链接到exe文件。这是因为A不需要知道B中的代码,只有exe文件需要。在链接阶段,所有库中的代码都被复制到exe文件中,因此从A对B的所有引用将在该步骤中得到解析。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接