【发布时间】:2014-08-04 09:09:28
【问题描述】:
在尝试编译 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
boost 是用 gcc 和以下命令编译的
./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
【问题讨论】:
-
您在最后一个命令中使用的是哪个
gcc?通常你不会在 Cygwin 的编译器中使用 Windows 风格的路径名。 -
我不确定您所说的“哪个 gcc”g++ 将在这里调用,因为 boost 是一个 C++ 库。我在 windows 命令提示符下运行 gcc,并相应地设置了 $path 环境变量。我也尝试过使用 cygwin 命令提示符,它会产生相同的错误。
-
GCC 有一个本地 Windows 端口,称为 MinGW。由于您使用本机路径名,我想知道您是否不小心使用了错误的
gcc。