c++ - 如何在 Cygwin 64 位中使用 boost asio 库

标签 c++ boost cygwin windows-10 boost-asio

我正在运行 Windows 10 64 位。 Cygwin 是 64 位的。

我从 cygwin 包管理器安装了 boost。

我尝试编译test.cpp:

#include <boost/asio.hpp>
int
main(int argc, char**argv)
{
    return 0;
}

使用命令

g++ -std=c++11 -Wall -g  -D__USE_W32_SOCKETS D_WIN32_WINNT=_WIN32_WINNT_WIN7 test.cpp -o test.exe

但是编译失败。 看起来正在使用 posix

知道为什么会失败吗?

In file included from /usr/include/boost/asio/detail/fd_set_adapter.hpp:22:0,
             from /usr/include/boost/asio/detail/select_reactor.hpp:27,
             from /usr/include/boost/asio/detail/reactor.hpp:29,
             from /usr/include/boost/asio/detail/impl/task_io_service.ipp:24,
             from /usr/include/boost/asio/detail/task_io_service.hpp:198,
             from /usr/include/boost/asio/impl/io_service.hpp:71,
             from /usr/include/boost/asio/io_service.hpp:767,
             from /usr/include/boost/asio/basic_io_object.hpp:19,
             from /usr/include/boost/asio/basic_socket.hpp:20,
             from /usr/include/boost/asio/basic_datagram_socket.hpp:20,
             from /usr/include/boost/asio.hpp:21,
             from appcontrol.cpp:16:
/usr/include/boost/asio/detail/posix_fd_set_adapter.hpp:82:12: error: 'fd_set' does not name a type
   operator fd_set*()
            ^
/usr/include/boost/asio/detail/posix_fd_set_adapter.hpp:105:11: error: 'fd_set' does not name a type
   mutable fd_set fd_set_;
           ^
/usr/include/boost/asio/detail/posix_fd_set_adapter.hpp: In constructor 'boost::asio::detail::posix_fd_set_adapter::posix_fd_set_adapter()':
/usr/include/boost/asio/detail/posix_fd_set_adapter.hpp:42:14: error: 'fd_set_' was not declared in this scope
    FD_ZERO(&fd_set_);
             ^

最佳答案

感谢#cygwin IRC 的帮助:

g++ -std=c++11 -Wall -g -D_XOPEN_SOURCE=500 test.cpp -o test.exe -lboost_system

关于c++ - 如何在 Cygwin 64 位中使用 boost asio 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39894006/

相关文章:

c++ - 带有boost的变量参数列表?

cygwin - 安装 cygwin : may be ini file problem 需要帮助

c++ - boost目录迭代器构造函数中的异常

linux - cygwin 和 Linux - 未设置 $USER 时获取当前用户

windows - Cygwin 的 bash 不能运行 'net use/user' 命令?

c++ - 如何将齐次 fusion::vector 转换为 (std/boost)::数组

c++ - 访问作为结构成员的对象的模板化成员函数

c++ - 单行函数模板c++的内联性保证

c++ - 如何在 C++ 中编写使用其他函数的函数

c++ - 如何在C++中制作无限序列