【问题标题】:Including boost/asio.hpp throwing error包括 boost/asio.hpp 抛出错误
【发布时间】:2016-07-07 21:15:08
【问题描述】:

当我在头文件中使用#include 时,我的程序将不再编译,出现以下错误:'boost::asio::basic_socket<Protocol,StreamSocketService>::cancel': By default, this function always fails with operation_not_supported when used on Windows XP, Windows Server 2003, or earlier. Consult documentation for details.

如果相关的话,我也在这个项目中使用 websocketpp - 但是只有在我特别包含在我的标题中时才会出现错误。

我使用的是 Windows 10、Visual Studio 14。

我不知道为什么会发生此错误。我根本不需要使用该库,只需包含它即可。

【问题讨论】:

  • 您是否已定义通知编译器您的目标系统高于 Windows XP?在 Visual Studio 中,这应该在某个属性页中,否则您可能需要类似 #define WIN32_WINNT 0x0600 的内容,其中 0x0600 是 Windows 的最低版本。你支持。
  • 非常感谢,这就是解决方案

标签: c++ visual-studio boost boost-asio


【解决方案1】:

如果您查看头文件,它会检查_WIN32_WINNT 至少是0x0600。参考this msdn page,您可以决定指定哪个版本,例如0x0600 适用于 Windows Vista 及更高版本。在 include 语句之前指定这一行:

#define _WIN32_WINNT 0x0600

【讨论】:

  • 添加 -D_WIN32_WINNT=0x0A00 作为编译器的命令行选项解决了这个问题 - 非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-19
  • 2022-11-28
  • 2021-09-02
  • 1970-01-01
相关资源
最近更新 更多