2015-09-21 40 views
0

我在用boost/asio編譯下面的程序。用mingw編譯出錯提示

#include <boost/asio.hpp> 

int main(){ 
    boost::asio::io_service ioservice; 
    return 0; 
} 

但我發現了以下鏈接錯誤

C:\Users\...\ccsKX5WE.o:myprogram.cpp:(.text+0x136)undefined reference to `boost::system::generic_category()' 
C:\Users\...\ccsKX5WE.o:myprogram.cpp:(.text+0x140)undefined reference to `boost::system::generic_category()' 
C:/mingw/bin/.../ld.exe: C:\Users\...\ccsKx5WE.o: bad reloc address 0xe in section `.text$_|N5boost6system14error_categoryD2Ev]' 
[email protected] error: ld return 1 exit status 

我用MinGW的這樣:

g++ -IC:\boost\boost_1_59_0 -o myprogram.exe -LC:\boost\boost_1_59_0\stage\lib -lboost_system-mgw48-1_59 myprogram.cpp 

我使用所有不同版本的libboost_systems標誌,如 lboost_system-mgw48-1_59.a lboost_system-mgw48-mt-1_59.a etc 和所有在一起,但沒有工作編輯。

什麼可能導致此問題?

+2

訂單事宜的聯繫。將'-lboost_system-mgw48-1_59'作爲編譯器命令行中的最後一項。 –

+0

我嘗試重新排序命令,但我仍然收到未定義的引用錯誤。 g ++ -IC:\ boost \ boost_1_59_0 myprogram.cpp -o myprogram.exe -LC:\ boost \ boost_1_59_0 \ stage \ lib -lboost_system-mgw48-1_59 – user22119

+0

我設法弄清楚什麼是錯的。我不得不在最後加上-lwsock32 – user22119

回答

0

該命令有兩個問題。

首先,如註釋中提到的πάνταῥεῖ,-lboost_system-mgw48-1_59標誌必須位於目標文件之後。

其次,由於我使用的是windows,我還需要添加-lwsock32。

g++ -IC:\boost\boost_1_59_0 myprogram.cpp -o myprogram.exe - LC:\boost\boost_1_59_0\stage\lib -lboost_system-mgw48-1_59 –lwsock32