我在使用 mingw-w64 gcc-4.8.1 在 Windows7 下使用 Boost_1_54 版本的 Boost::Log 库时遇到问题。我可以毫无问题地编译 boost,但我无法正确链接以下程序。
#include <boost/log/trivial.hpp>
int main(int, char*[])
{
BOOST_LOG_TRIVIAL(trace) << "A trace severity message";
BOOST_LOG_TRIVIAL(debug) << "A debug severity message";
BOOST_LOG_TRIVIAL(info) << "An informational severity message";
BOOST_LOG_TRIVIAL(warning) << "A warning severity message";
BOOST_LOG_TRIVIAL(error) << "An error severity message";
BOOST_LOG_TRIVIAL(fatal) << "A fatal severity message";
return 0;
}
我使用以下命令编译/链接程序
g++ -DBOOST_LOG_DYN_LINK log.cpp
-IC:\\Build\\Libs\\bin64\\boost\\include
-LC:\\Build\Libs\\bin64\\boost\\lib
-lpthread
-lboost_thread-mgw48-mt-1_54
-lboost_system-mgw48-1_54
-lboost_log-mgw48-1_54
-lboost_log_setup-mgw48-1_54
-lboost_filesystem-mgw48-1_54 -o loga.exe
错误如下所示:
C:\Users\buck\AppData\Local\Temp\ccvYpCEb.o:log.cpp:(.text+0x37): undefined refe
rence to `__imp__ZN5boost3log9v2_mt_nt57trivial6logger3getEv'
C:\Users\buck\AppData\Local\Temp\ccvYpCEb.o:log.cpp:(.text+0x7f): undefined refe
rence to `__imp__ZN5boost3log9v2_mt_nt57trivial6logger3getEv'
c:/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/4.8.1/../../../../x86_64-w64-
mingw32/bin/ld.exe: C:\Users\buck\AppData\Local\Temp\ccvYpCEb.o: bad reloc addre
ss 0x0 in section `.pdata$_ZNSt11char_traitsIcE6lengthEPKc'
collect2.exe: error: ld returned 1 exit status
在 linux 下,我可以毫无问题地运行该示例。我还尝试了不同的库顺序。但结果是一样的。
有没有人知道如何让它运行或如何继续找到问题?我现在正在尝试三个小时,但我不知道下一步该做什么。
问候
凯文