使用Cygwin + gcc编译Boost示例项目

时间:2014-08-04 09:09:28

标签: c++ gcc boost cygwin

尝试编译boost asio示例项目时     async_tcp_echo_server.cpp

我收到如下错误:

__MSABI_LONG was not declared in this file scope
BOOST_ASIO_NATIVE_ERROR(ERROR_BROKEN_PIPE)

__MSABI_LONG was not declared in this file scope
BOOST_ASIO_NATIVE_ERROR(ERROR_OPERATION ABORTED)

这是Boost 1.55.0和gcc版本4.8.3

使用gcc和以下命令编译boost

./bootstrap.sh
./b2 cxxflags="-D__USE_W32_SOCKETS -D_WIN32_WINNT=0x0501
./b2 install

我尝试使用

编译示例项目
gcc -std=C++11 -D__USE_W32_SOCKETS -D_WIN32_WINNT=0x0501 -I C:\boost_1_55_0 C:\boost_1_55_0\boost\asio.hpp async_tcp_echo_server.cpp

2 个答案:

答案 0 :(得分:0)

我知道这是一种旧线索。 我设法通过Cygwin setup_x86.exe重新安装boost lib来修复它。 我安装的版本是1.57。而且您不必在命令行中放置-D选项。 希望这可能有所帮助。

答案 1 :(得分:0)

来自cygwin安装程序的

1_57版本对我没用,它给了我fd_set errors

这是我试图使boost示例代码工作的原因:

  1. 在顶部添加#define __MSABI_LONG(x) x。 - 冷,我知道:)。
  2. 将这些标记添加到g++-D_WIN32_WINNT=0x0501 -D__USE_W32_SOCKETS -std=c++11 -lboost_system -lws2_32
  3. 瞧!