使用mingw的boost编译错误



我正在尝试用boost/asio编译下面的程序。

#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]'
collect2.exe@ error: ld return 1 exit status

我是这样用mingw的:

g++ -IC:boostboost_1_59_0 -o myprogram.exe -LC:boostboost_1_59_0stagelib -lboost_system-mgw48-1_59 myprogram.cpp

我使用了所有不同版本的libboostrongystems标志,例如lboostrongystem-mgw48-1_59.alboostrongystem-mgw48-mt-1_59.a等所有的努力都没有成功。

是什么导致了这个问题?

这个命令有两个问题。

首先,正如在注释中提到的π α ντα ν ν, -lboostrongystem-mgw48-1_59标志必须在目标文件之后。

其次,因为我使用的是windows,所以我还需要添加-lwsock32。

g++ -IC:boostboost_1_59_0 myprogram.cpp -o myprogram.exe - LC:boostboost_1_59_0stagelib -lboost_system-mgw48-1_59 –lwsock32

最新更新