Mingw和Boost :: Log:构建一个简单的例子失败了

时间:2013-08-26 14:30:18

标签: c++ boost mingw

我从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一起使用?

2 个答案:

答案 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