我从http://nuwen.net/mingw.html下载了mingw发行版,并试图从Boost::Log documentation构建一个简单的示例。这会导致以下(链接器?)错误:
C:\log>g++ -lboost_log main.cpp -o logtest.exe
C:\Users\MyUserName\AppData\Local\Temp\cc5rtLIQ.o:main.cpp:(.text+0x42): undefined reference to `boost::log::v2s_mt_nt5::trivial::logger::get()'
C:\Users\MyUserName\AppData\Local\Temp\cc5rtLIQ.o:main.cpp:(.text+0x5e): undefined reference to `boost::log::v2s_mt_nt5::trivial::logger::get()'
C:\Users\MyUserName\AppData\Local\Temp\cc5rtLIQ.o:main.cpp:(.text+0xe8): undefined reference to `boost::log::v2s_mt_nt5::trivial::logger::get()'
C:\Users\MyUserName\AppData\Local\Temp\cc5rtLIQ.o:main.cpp:(.text+0x105): undefined reference to `boost::log::v2s_mt_nt5::trivial::logger::get()'
C:\Users\MyUserName\AppData\Local\Temp\cc5rtLIQ.o:main.cpp:(.text+0x18f): undefined reference to `boost::log::v2s_mt_nt5::trivial::logger::get()'
C:\Users\MyUserName\AppData\Local\Temp\cc5rtLIQ.o:main.cpp:(.text+0x1ac): more undefined references to `boost::log::v2s_mt_nt5::trivial::logger::get()' follow
c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/4.8.1/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\MyUserName\AppData\Local\Temp\cc5rtLIQ.o: bad reloc address 0x148 in section `.rdata'
collect2.exe: error: ld returned 1 exit status
g ++的版本是4.8.1。
我还尝试使用自定义构建的boost库构建示例,它都使用来自Mingw-builds的mingw编译器和mingw-get安装程序。 mingw-builds one显示相同的错误消息,mingw-get的版本甚至无法构建Boost :: Log。
如何让日志库与mingw一起使用?
答案 0 :(得分:2)
您需要修复命令行:
g++ main.cpp -lboost_log -o logtest.exe
参数按指定的顺序处理,只有在遇到库时才从库中解析符号。
答案 1 :(得分:0)
我只能使用以下命令行在gcc(linux)中编译boost log trivial示例:
g++ -o main main.cpp -DBOOST_LOG_DYN_LINK -lboost_log -lpthread