我的项目使用了windows.h,其中也用到了winsock.h,而我需要包含boost:asio,它使用的是winsock2.h。因此我得到了许多错误,提示Winsock.h已经被包含了。 我可以定义WIN32_LEAN_AND_MEAN来避免windows.h使用winsock。但问题是,我需要windows.h来使用它,我只需要Asio来实现异步定时器,不需要它的winsock2.h。我尝试搜索如何禁用Asio对winsock2的使用,我发现可以在包含boost:asio之前定义BOOST_ASIO_NO_WIN32_LEAN_AND_MEAN来实现,但我仍然得到相同的错误。
#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): 致命错误 C1189: #error : WinSock.h 已经被包含