链接静态库两次会导致重复吗?

7
我有一个项目同时链接到OpenCV和cvBlob,但是cvBlob也链接了OpenCV。OpenCV和cvBlob都被构建为静态库。
我的可执行文件是否会有所有被我代码和cvBlob使用的OpenCV函数的2个副本,或者链接器是否会检测到并删除冗余?
cvBlob和我的代码都链接到相同的OpenCV lib文件。

1
这实际上是一个非常普遍的情况 - 每个人例如都链接到CRT。链接器毫不费力地处理它。 - Mark Ransom
如果同一库有两个不同的版本,会发生什么情况呢?哪一个版本会被使用是不确定的吗? - the_mandrill
2
如果您有实现相同函数的不同 .lib文件,则在链接时会出现“重复符号”错误/警告。 - cbranch
1个回答

7
如果它们都链接到相同的.lib文件,则最终可执行文件中只有一个副本。

2
如何确定它是相同的.lib文件?通过路径吗?如果链接两个包含相同lib的不同动态加载库怎么办?您是否有一些文档/其他材料的链接来深入了解这个问题? - user518450

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