链接到退出时链接到另一个共享库段错误的共享库

时间:2016-04-04 00:46:55

标签: c++ cmake

不幸的是,我无法创建一个最小的例子,但情况就是这样。我有一个链接到另一个的库,如下所示:

add_library(MainLib MainLib.cpp)

add_library(ChildLib ChildLib.cpp)
target_link_libraries(ChildLib MainLib)

我可以这样做(不使用ChildLib,而是直接将ChildLib.cpp编译到可执行文件中):

ADD_EXECUTABLE(TestNoLink TestNoLink.cpp ChildLib.cpp)
TARGET_LINK_LIBRARIES(TestNoLink MainLib)

并且所有内容都可以编译,链接和运行。

但是,如果我这样做(现在使用ChildLib):

ADD_EXECUTABLE(TestChildLink TestChildLink.cpp)
TARGET_LINK_LIBRARIES(TestChildLink ChildLib) # no need to link to MainLib here because ChildLib already links to MainLib

一切仍然编译和链接,它实际上运行良好,但在完成运行后,它会段错误。

我是否应该在这里寻找一些概念来找出造成这种情况的原因?

1 个答案:

答案 0 :(得分:0)

问题显然是我链接到同一个库(Boost库)的共享AND静态版本。链接器不应该注意到并产生错误吗?