2016-07-07 88 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