【问题标题】:boost.log errors linking staticallyboost.log 静态链接错误
【发布时间】:2013-04-23 10:25:18
【问题描述】:

在尝试将我的项目与 MSVC 10.0 上的 boost.log 静态链接时,我遇到了以下(以及更多)错误:

 1>libboost_log-vc100-mt-gd-1_53.lib(attribute_name.obj) : error
 LNK2001: unresolved external symbol "**__declspec(dllimport)** public:
 __thiscall std::_Container_base::~_Container_base(void)" (__imp_??1_Container_base@std@@QAE@XZ)
 1>libboost_log-vc100-mt-gd-1_53.lib(text_file_backend.obj) : error
 LNK2001: unresolved external symbol "**__declspec(dllimport)** public:
 __thiscall std::_Container_base::~_Container_base(void)" (__imp_??1_Container_base@std@@QAE@XZ)

请注意,该项目正在链接到 boost 系统、文件系统和线程库。

1>      Searching ../lib/\libboost_system-vc100-mt-gd-1_53.lib:
1>      Searching ../lib/\libboost_date_time-vc100-mt-gd-1_53.lib:
1>      Searching ../lib/\libboost_regex-vc100-mt-gd-1_53.lib:
1>      Searching ../lib/\libboost_thread-vc100-mt-gd-1_53.lib:
1>      Searching ../lib/\libboost_chrono-vc100-mt-gd-1_53.lib:
1>      Searching ../lib/\libboost_log-vc100-mt-gd-1_53.lib:
1>      Searching ../lib/\libboost_filesystem-vc100-mt-gd-1_53.lib:

我的项目没有定义BOOST_ALL_DYN_LINKBOOST_LOG_DYN_LINK 宏,所以我没想到会看到__declspec 签名,我认为这是最终的问题。我是否缺少正确静态链接此库所需的内容?

更新

我在我的项目中删除了预编译的头文件并执行了“清理”,并且所有内容都链接得很好。是否有可能是预编译的头文件以某种方式导致项目静态链接到 CRT?

【问题讨论】:

  • BOOST_ALL_DYN_LINK 强制 Boost 库动态链接,而您看到的 __declspec 签名与标准 c++ 库相关,后者是动态链接的。 PCH 无法更改 CRT 链接,它只是 MT/MD 编译器选项,但 IDE 中通常存在一些故障,因此清理和重建总是好的。
  • @IgorR。总有东西要学。感谢您的帮助,请随时重新发布作为答案。
  • 我认为它没有回答你的问题,因为我不知道你的项目设置有什么问题。

标签: boost boost-log


【解决方案1】:

您可能需要先链接log_setup,然后再链接log,然后再链接filesystem等等,这是我CMakeLists.txt中的boost链接代码:

set(USED_BOOST_LIBS ${Boost_LOG_SETUP_LIBRARY} ${Boost_LOG_LIBRARY} 
  ${Boost_FILESYSTEM_LIBRARY} 
  ${Boost_SYSTEM_LIBRARY} ${Boost_DATE_TIME_LIBRARY} 
  ${Boost_THREAD_LIBRARY} ${Boost_REGEX_LIBRARY} 
  )

...
target_link_libraries(myexe ${USED_BOOST_LIBS})

我在 MSVC 14.0 和 gcc 4.8 上都能正常工作。你可以试试。

【讨论】:

    猜你喜欢
    • 2014-01-03
    • 1970-01-01
    • 2013-08-27
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    • 2016-06-21
    • 2019-07-18
    • 2015-03-26
    相关资源
    最近更新 更多