私の C++ アプリケーションには、ブースト ライブラリ (system、filsystem、timer、および chrono) にリンクするスタティック ライブラリ (libCOMMON.a) があります。
私は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 を使用して) すべて正常にコンパイルされますが、アプリケーションを起動すると、ブーストに関連する動的ライブラリ内の一部のシンボルを解決できないため、プラグインをロードできません。
解決策は、各プラグインをブーストにリンクすることでした。より良い方法はありますか?ブースト ライブラリが libCOMMON.a に静的にリンクされている場合は、プラグインを libCOMMON.a にリンクするだけで十分であると考えました。
誰かが何が起こっているのか説明できますか?
ありがとう