为什么即使依存关系正确链接,我也无法得到引用

时间:2019-03-21 12:22:52

标签: c++ gcc linker

我设置了一个CMake项目,其中有一个可执行文件静态链接到libA和libB,而libB从libA调用方法(具体来说:libA是一些第三方库,而libB是我在顶部添加的一些实用程序/便利性扩展)。尽管Windows上的所有内容都能正常编译和链接,但在gcc 8.2下却得到了一些未解决的引用。经过一番挖掘之后,我注意到当我确保在第一次调用libB之前先调用libA时,链接器错误消失了。

因此,似乎链接器首先忽略并且根本没有链接libA,因为它可以发现我没有直接在可执行文件中使用它,然后发现了libB的首次使用,然后要么无法解析libA的根本没有符号,或者在libB之后以错误的顺序链接它们,从而导致链接器错误。这是正确的还是其他事情发生了?合适的解决方案是什么?我必须在CMake脚本中添加任何标志或设置,还是建议您仅在可执行文件中从libB链接到libA,然后再链接到libB?

编辑:问题是,我以完全错误的顺序链接了库(实际上,我非常确信这是正确的)。正如Mike Kinghan在某处提供的参考资料指出,依赖另一库的lib必须在target_link_libraries调用中的之前

0 个答案:

没有答案