链接升压日志1_60使用MinGW在升级到boost 1.60.0一些应用程序失败与boost log链接时使用MinGW 4.9.2在Windows 7问题在Windows 7
建我得到下面的连接错误:
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
升压1.60.0生成日志文件显示,这两个升压日志和提高log_set建起来没有任何错误或警告,包括一些它的失败与如链接文件:
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上链接OK使用升压1.59.0使用MinGW 4.9.2,并关联OK使用使用gcc 5.1.1在Fedora 23上升压1.60.0。
boost asio自升压1.58.0以来没有改变。那么在升压1.59.0和升压1.60.0之间boost log中发生了什么变化,导致MinGw链接在Windows上失败?
谢谢@andrey ,'Dependency Walker'显示版本为'_ZN5boost3log9v2_mt_nt54core3getEv',并设置'BOOST_USE_WINAPI_VERSION = 0x0501'修复版本。并感谢您首先创建这样一个伟大的图书馆。 我想设置'BOOST_USE_WINAPI_VERSION = 0x601'同时建立提升,但应该怎么做呢?我可以在'boost/detail/winapi/config.hpp'中设置它,但我不想编辑你的文件。我可以在[构建增强]的同时将宏传递给b2(http://www.boost.org/doc/libs/1_60_0/more/getting_started/windows.html)吗? – kenba
您可以按照您指定其他[config macros](http://www.boost.org/doc/libs/1_60_0/libs/log/doc/html/log/installation/config.html)的相同方式来执行此操作 - by在b2命令行中添加'define = BOOST_USE_WINAPI_VERSION = 0x0601'。 –
我试着添加'define = BOOST_USE_WINAPI_VERSION = 0x0601'和其他一些'BOOST_USE_WINAPI_VERSION'和'_WIN32_WINNT'的组合,但都没有为我工作。它没有编译'chrono',因为'GetTickCount64'没有被声明。根据你在'boost/detail/winapi/config.hpp'中的注释,我可以看到问题是我正在使用'MinGw'(来自QtCreator)而不是'MinGw64':'只有'GetTickCount'在'winbase中定义。 h'所以我坚持设置'BOOST_USE_WINAPI_VERSION = 0x0501'直到'MinGw'更新...感谢您的帮助。 – kenba