You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Boost Log从1.69升级至1.82后出现链接失败问题

Boost 1.82日志组件链接失败问题

原本使用Boost 1.69版本时日志功能运行正常,升级至1.82版本后,未修改任何日志器设置或配置,但出现日志器无法与可执行文件链接的问题。已确认log和log_setup组件配置正确并加入target_link_libraries。

链接库列表

C:/vcpkg/installed/x64-windows/lib/boost_locale-vc140-mt.lib
debugC:/vcpkg/installed/x64-windows/debug/lib/boost_locale-vc140-mt-gd.lib
optimizedC:/vcpkg/installed/x64-windows/lib/boost_filesystem-vc140-mt.lib
debugC:/vcpkg/installed/x64-windows/debug/lib/boost_filesystem-vc140-mt-gd.lib
optimizedC:/vcpkg/installed/x64-windows/lib/boost_log-vc140-mt.lib
debugC:/vcpkg/installed/x64-windows/debug/lib/boost_log-vc140-mt-gd.lib
optimizedC:/vcpkg/installed/x64-windows/lib/boost_log_setup-vc140-mt.lib
debugC:/vcpkg/installed/x64-windows/debug/lib/boost_log_setup-vc140-mt-gd.lib
optimizedC:/vcpkg/installed/x64-windows/lib/boost_unit_test_framework-vc140-mt.lib
debugC:/vcpkg/installed/x64-windows/debug/lib/boost_unit_test_framework-vc140-mt-gd.lib
optimizedC:/vcpkg/installed/x64-windows/lib/boost_thread-vc140-mt.lib
debugC:/vcpkg/installed/x64-windows/debug/lib/boost_thread-vc140-mt-gd.lib
optimizedC:/vcpkg/installed/x64-windows/lib/boost_regex-vc140-mt.lib
debugC:/vcpkg/installed/x64-windows/debug/lib/boost_regex-vc140-mt-gd.lib
optimizedC:/vcpkg/installed/x64-windows/lib/boost_chrono-vc140-mt.lib
debugC:/vcpkg/installed/x64-windows/debug/lib/boost_chrono-vc140-mt-gd.lib
optimizedC:/vcpkg/installed/x64-windows/lib/boost_atomic-vc140-mt.lib
debugC:/vcpkg/installed/x64-windows/debug/lib/boost_atomic-vc140-mt-gd.lib

CMake配置

set(BOOST_REQUIRED_VERSION 1.82.0)

set(BOOST_COMPONENTS locale filesystem log log_setup)

if (WITH_TESTS)
    set(BOOST_COMPONENTS ${BOOST_COMPONENTS} unit_test_framework)
endif()

find_package(Boost ${BOOST_REQUIRED_VERSION} REQUIRED COMPONENTS ${BOOST_COMPONENTS})

测试代码示例

BOOST_AUTO_TEST_CASE(LoggingTest)
{
    init();
    logging::add_common_attributes();

    using namespace logging::trivial;
    src::severity_logger< severity_level > lg;

    BOOST_LOG_SEV(lg, trace) << "A trace severity message";
    BOOST_LOG_SEV(lg, debug) << "A debug severity message";
    BOOST_LOG_SEV(lg, info) << "An informational severity message";
    BOOST_LOG_SEV(lg, warning) << "A warning severity message";
    BOOST_LOG_SEV(lg, error) << "An error severity message";
    BOOST_LOG_SEV(lg, fatal) << "A fatal severity message";
}

链接错误信息

[build] C:\Users\Sagun Khosla\Desktop\Repos\horizon\out\install\Horizon-Tests\test\Release\LoggingTest.exe : fatal error LNK1120: 56 unresolved externals [C:\Users\Sagun Khosla\Desktop\Repos\horizon\out\build\Horizon-Tests\src\Tests\LoggingTest.vcxproj]

目标链接配置

target_link_libraries(auth
    PUBLIC
        ${Boost_LIBRARIES}
        networking
        ${Readline_LIBRARY}
        ${LUA_LIBRARIES}
        OpenSSL::SSL
)

具体未解析符号示例

[build] Logger.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) struct boost::log::v2_mt_nt6::aux::format_description<char> __cdecl boost::log::v2_mt_nt6::aux::parse_format<char>(char const *,char const *)" (__imp_??$parse_format@D@aux@v2_mt_nt6@log@boost@@YA?AU?$format_description@D@0123@PEBD0@Z) referenced in function "public: __cdecl boost::log::v2_mt_nt6::aux::basic_format<char>::basic_format<char>(char const *)" (??0?$basic_format@D@aux@v2_mt_nt6@log@boost@@QEAA@PEBD@Z) [C:\Users\Sagun Khosla\Desktop\Repos\horizon\out\build\Horizon-Tests\src\Tests\LoggingTest.vcxproj]

解决建议

  1. 校验ABI与编译选项一致性:确认vcpkg安装的Boost库编译选项(MT/MD、debug/release)与项目完全匹配,Boost 1.69到1.82存在ABI变更,必须保证库和项目的编译参数统一。
  2. 补充缺失的依赖组件:尝试在BOOST_COMPONENTS中添加date_time和serialization组件,高版本Boost.Log可能新增了这些依赖,重新执行find_package。
  3. 清理CMake缓存:删除build目录下的CMakeCache.txt和生成的项目文件,重新运行CMake配置,避免旧路径缓存导致的问题。
  4. 定义动态链接宏:如果使用动态Boost库,在项目中添加预定义宏BOOST_LOG_DYN_LINK,确保符号导入正确。
  5. 重装Boost库:通过vcpkg重新安装Boost 1.82,命令:vcpkg install boost-log:x64-windows,确保库文件完整无损坏。

内容的提问来源于stack exchange,提问作者SagunKho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 20:17:01