2016-07-07 66 views
0

当我在头文件中使用的#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.包括升压/ asio.hpp抛出错误

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

我使用的是Windows 10时,Visual Studio 14

我不知所措,为什么这个错误是发生。我根本不必使用该库,只需将其包含在内。

+1

您是否定义了通知编译器您所针对的系统大于Windows XP?在Visual Studio中,它应该位于某个属性页面中,否则可能需要类似'#define WIN32_WINNT 0x0600'的地方,其中0x0600是Windows的最低版本。你支持。 – user4581301

+1

这里我们去:https://msdn.microsoft.com/en-us/library/8x480de8.aspx – user4581301

+0

非常感谢,这是解决方案 – Jack

回答

2

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

#define _WIN32_WINNT 0x0600 
+1

添加'-D_WIN32_WINNT = 0x0A00'作为编译器修复的命令行选项问题 - 非常感谢你! – Jack