我正在尝试使用Cygwin 64位在我的C ++项目中使用boost.asio。但是,即使是这样简单的程序:
// 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_SERVICE
,getaddrinfo
或host_name
之类的符号。完整的错误日志可以在这里找到:https://pastebin.com/RwpX3bx3
在this question here中,建议我在命令行中添加-D_XOPEN_SOURCE=500
。但是,正如您所看到的,我确实使用-D_XOPEN_SOURCE=500
对其进行了编译,但它不起作用。我还尝试通过Cygwin安装程序卸载并重新安装libboost-devel
,但这也行不通。
(编辑:不,没有-D_XOPEN_SOURCE=500
也无法使用。没有它,您将得到:https://pastebin.com/AExBa2pL)
这是怎么了?
答案 0 :(得分:1)
问题出在-std=c++11
中,该问题限制了功能的范围。
不受任何限制,编译工作正常。
$ g++ -c server.cpp -o server.o
$ ls -s server.o
164 server.o