在 Cygwin 64 上包含 boost.asio 时出错

Error when including boost.asio on Cygwin 64

我正在尝试在我的 C++ 项目中使用 boost.asio,使用 Cygwin 64 位。然而,即使是这么简单的程序:

// compiled by: g++ -g -std=c++11 -D_XOPEN_SOURCE=500 -c -o build/server.o src/server.cpp

#include <boost/asio.hpp>

int main(int argc, const char** argv) {
    return 0;
}

导致大量错误消息。 GCC 抱怨它找不到像 EAI_SERVICEgetaddrinfohost_name 这样的符号。完整的错误日志可以在这里找到:https://pastebin.com/RwpX3bx3

中,建议我在命令行中加上-D_XOPEN_SOURCE=500。但是,如您所见,我使用 -D_XOPEN_SOURCE=500 编译它,但它不起作用。我还尝试通过 Cygwin 安装程序卸载并重新安装 libboost-devel,但这也没有用。

(编辑:不,没有 -D_XOPEN_SOURCE=500 它也不起作用。没有它,你会得到这个:https://pastebin.com/AExBa2pL

这里出了什么问题?

问题出在限制函数作用域的-std=c++11中。 没有任何限制,编译工作正常。

$ g++ -c server.cpp -o server.o
$ ls -s server.o
164 server.o