【发布时间】:2016-03-27 11:32:57
【问题描述】:
在升级到 boost 1.60.0 时,某些应用程序在 Windows 7 上使用 MinGw 4.9.2 构建时无法与 boost log 链接。
我收到以下链接器错误:
undefined reference to `_imp___ZN5boost3log9v2_mt_nt67trivial6logger3getEv'
undefined reference to `_imp___ZN5boost3log9v2_mt_nt63aux15stream_providerIcE17allocate_compoundERNS1_6recordE'
undefined reference to `_imp___ZN5boost3log9v2_mt_nt63aux25unhandled_exception_countEv'
undefined reference to `_imp___ZN5boost3log9v2_mt_nt611record_view11public_data7destroyEPKS3_'
bad reloc address 0x1 in section `.text$_ZNK5boost4asio5error6detail13misc_category4nameEv[__ZNK5boost4asio5error6detail13misc_category4nameEv]'
注意:BOOST_LOG_DYN_LINK 已定义:
g++ -c -pipe -fno-keep-inline-dllexport -Wall -Wextra -Wpedantic -Ofast -std=c++1y -frtti -fexceptions -mthreads -DUNICODE -DLOGGING_ENABLED -DNTDDI_VERSION=NTDDI_WIN7 -D_WIN32_WINNT=_WIN32_WINNT_WIN7 -DBOOST_THREAD_USE_LIB=1 -DBOOST_LOG_DYN_LINK=1
boost 1.60.0 构建日志文件显示,boost log 和 boost log_setup 均在构建时没有任何错误或警告,包括一些无法链接的文件,例如:
gcc.compile.c++ bin.v2\libs\log\build\gcc-mingw-4.9.2\release\threading-multi\trivial.o
gcc.compile.c++ bin.v2\libs\log\build\gcc-mingw-4.9.2\release\threading-multi\unhandled_exception_count.o
应用程序在 Windows 7 上使用 boost 1.59.0 和 MinGw 4.9.2 链接 OK,在 Fedora 23 上使用 boost 1.60.0 和 gcc 5.1.1 链接 OK。
boost asio 自 boost 1.58.0 以来没有改变。那么boost log 在 boost 1.59.0 和 boost 1.60.0 之间发生了哪些变化导致 Windows 上的 MinGw 链接失败?
【问题讨论】:
标签: windows gcc boost boost-log