gpt4 book ai didi

c++ - Boost::asio winsock 和 winsock 2 兼容性问题

转载 作者:IT老高 更新时间:2023-10-28 22:08:25 25 4
gpt4 key购买 nike

我的项目使用 windows.h,其中使用了 winsock.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 来做到这一点,但我仍然得到同样的错误。

#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

最佳答案

尝试更改包含的顺序。从 boost/asio.hpp 开始,在其后面加上 windows.h

通常任何代码库的编写者都会解决兼容性问题,但如果他们的代码首先满足编译器和预处理器,他们可以做得更好。

ACE 也有类似的问题,包括 ace/OS.h 在其他任何东西解决它之前。

关于c++ - Boost::asio winsock 和 winsock 2 兼容性问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9750344/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com