我的項目使用winsock.h的windows.h,並且需要包含使用winsock2的boost:assio。所以我收到許多Winsock.h已經包含的錯誤。 我可以定義WIN32_LEAN_AND_MEAN。所以windows.h不會使用winsock。問題是,我需要windows.h來使用它,而我只需要Asio來進行異步定時器。我不需要它的winsock2.h。我試着搜索如何禁用它的winsock2使用,我發現我可以通過在包含boost:asio之前定義BOOST_ASIO_NO_WIN32_LEAN_AND_MEAN來做到這一點,但我仍然得到相同的錯誤。Boost :: asio winsock和winsock 2兼容性問題
#include <windows.h>
#define BOOST_ASIO_NO_WIN32_LEAN_AND_MEAN
#include <boost/asio.hpp>
錯誤
1>c:\program files\boost\boost_1_47\boost\asio\detail\socket_types.hpp(22): fatal error C1189: #error : WinSock.h has already been included
它工作!謝謝:) – 2012-03-17 13:52:33
還有一個問題:一個應用程序是否可以通過winsock2讀取數據包,從另一個應用程序發送數據包到winsock1?反之亦然。 – 2012-03-18 18:51:26
@DainiusKreivys我不確定從winsock1到2的更新是什麼。我只能猜測它主要是bug修復。把蟲子放在一邊應該可以正常工作,但由於可能有蟲子,它們可能會出現。 – selalerer 2012-03-19 08:40:34