已经包含了boost asio和WinSock.h

boost asio and WinSock.h has already been included

本文关键字:WinSock asio boost 包含      更新时间:2023-10-16

像许多使用Boost ASIO库的人一样,我得到了"WinSock.h已经被包含"的错误。在其他帖子中,这个问题的答案是将#include行移到#include

之上。

在我的情况下,我正在研究一个使用Wx Widgets的项目,似乎没有任何连接到MFC,或直接连接到Win32。我没能找到任何对windows.h的调用,也没有任何相关的东西。我也尝试过使用WIN32_LEAN_AND_MEAN和BOOST_ASIO_NO_WIN32_LEAN_AND_MEAN声明。

我想知道是否有人在编写Wx Widgets项目时遇到了Boost ASIO的类似问题?如果是这样,您是否能够解决Winsock错误?

我有一个解决办法。解决这个问题的步骤是在项目的设置中定义WIN32_LEAN_AND_MEAN。

进入项目->属性,选择C/c++ ->预处理器

在预处理器定义下,添加WIN32_LEAN_AND_MEAN。

我之前犯的错误是在代码文件中添加了一个#define WIN32_LEAN_AND_MEAN。这没有任何帮助。注意,我的#include仍然设置在WxWidget include的上方。

设置wxUSE_IPV6为1,或者,在include/wx/msw/setup.h文件中设置wxUSE_SOCKETS为0应该可以解决这个问题——如果你做前者,可以包括WinSock2头,如果你做后者,也可以不包括WinSock头。

不要忘记重建您的wxWidgets库,如果你做任何改变!