不幸的是,我无法创建一个最小的例子,但情况就是这样。我有一个链接到另一个的库,如下所示:
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
一切仍然编译和链接,它实际上运行良好,但在完成运行后,它会段错误。
我是否应该在这里寻找一些概念来找出造成这种情况的原因?
答案 0 :(得分:0)
问题显然是我链接到同一个库(Boost库)的共享AND静态版本。链接器不应该注意到并产生错误吗?