在我的 C++ 应用程序中,我有一个链接到 boost 库的静态库 (libCOMMON.a):system、filsystem、timer 和 chrono。
我正在使用 CMake,这是我创建和链接 libCOMMON.a 的方式:
ADD_LIBRARY(COMMON ${COMMON_SRCS})
target_link_libraries(COMMON
${BOOST_LIB_DIR}/libboost_filesystem.a
${BOOST_LIB_DIR}/libboost_system.a
${BOOST_LIB_DIR}/libboost_timer.a
${BOOST_LIB_DIR}/libboost_chrono.a
)
我也有链接到 libCOMMON.a 的这个应用程序的插件。插件被构建为动态库。一切都可以编译(使用 gcc),但是当我启动应用程序时,无法加载插件,因为无法解析与 boost 相关的动态库中的某些符号。
解决方案是将每个插件链接到 boost。有没有更好的办法 ?我认为如果boost库静态链接到libCOMMON.a,将插件链接到libCOMMON.a就足够了。
有人可以解释发生了什么吗?
谢谢