【发布时间】:2017-07-31 18:21:20
【问题描述】:
我有一个使用 Asio 无升压版本的跨平台项目。在 OSX 上,我使用 autotools 构建库,然后将其包含在我的项目中:
exec_program(COMMAND "./autogen.sh" WORKING_DIRECTORY ${asio_SOURCE_DIR}/asio)
exec_program(COMMAND "./configure --without-boost" WORKING_DIRECTORY ${asio_SOURCE_DIR}/asio)
我找不到适用于 Windows 的说明,并且在运行 CMake 时注意到 Asio 会生成一个 Visual Studio 文件,因此我将上述说明设置为仅在 Unix 平台上运行。
但现在我在 Windows 上遇到奇怪的错误:
asio\include\generic\basic_endpoint.hpp(71): error c2039: 'protocol' is not a member of 'std::basic_string<chr, std::char_traits<<char>, std::allocation<char>>'
我还有一个 asio::local::stream_protocol::endpoint 的实例,我必须将其更改为 asio::generic::stream_protocol::endpoint。
所有这些代码都在 OSX 上编译并运行良好。
知道发生了什么吗?
【问题讨论】:
-
请创建一个 MCVE stackoverflow.com/help/mcve
-
在 Linux 上尝试
-pedantic标志。这将使其严格遵守 C++ 标准,您会发现问题是否只是因为 gcc 的容忍度。 -
@TheQuantumPhysicist 我已经在 OSX 上有了这个标志。 GCC4.8 编译代码也没有问题。
标签: c++ windows macos c++11 asio