2013-08-26 59 views
2

我已經從http://nuwen.net/mingw.html下載了明確的發行版,並試圖從Boost::Log documentation構建一個簡單的示例。這導致以下(鏈接器?)錯誤:Mingw and Boost :: Log:構建不重要的示例失敗

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顯示相同的錯誤消息,mingw-get的版本甚至無法構建Boost :: Log。

如何獲取日誌庫以使用mingw?

回答

2

你需要修復你的命令行:

g++ main.cpp -lboost_log -o logtest.exe 

參數是按順序處理規定和符號從遇到庫時才能庫解決。

+0

不幸的是,這隻會導致更多的錯誤:http://pastebin.com/xkLWk5uz – Geier

+0

@Geier:好吧,它清楚地表明第一組錯誤得到了解決,現在您需要提供'boost_log'使用的其他庫! –

+0

哦!謝謝,就是這樣!完整的命令行供參考:'g ++ main.cpp -lboost_log -lboost_system -lboost_filesystem -lboost_date_time -lboost_thread -o logtest.exe' – Geier

0

我只能編譯GCC(Linux)的升壓日誌簡單的例子,使用以下命令行:

g++ -o main main.cpp -DBOOST_LOG_DYN_LINK -lboost_log -lpthread