【问题标题】:boost asio and WinSock.h has already been includedboost asio 和 WinSock.h 已经包含在内
【发布时间】:2015-07-28 21:01:41
【问题描述】:

像许多使用 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 错误?

【问题讨论】:

  • 包含 wxwidgets 标头几乎肯定会引入winsock.h,因此将您的 ASIO 包含在任何 wxwidgets 包含之上。
  • 当一个标头拉入winsock2.h而另一个标头拉入winsock.h时,我也看到了这种情况。
  • 感谢您的回复。我已将 ASIO 包含在 wxwidgets 上方(认为 windows.h 调用被埋在那里),但到目前为止我还没有运气。我得看看 wx 文件包括什么。也许我的问题在那里?谢谢你们。

标签: c++ boost boost-asio wxwidgets


【解决方案1】:

我有一个解决方案。解决此问题的步骤是在项目设置中定义 WIN32_LEAN_AND_MEAN。

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

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

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

【讨论】:

    【解决方案2】:

    wxUSE_IPV6 设置为 1 或将 wxUSE_SOCKETS 设置为 0 在您的 include/wx/msw/setup.h 文件中应该可以解决该问题 - 如果您执行前者,则包含 WinSock2 标头,或者如果您这样做,则不包含 WinSock 标头后者。

    如果您进行任何更改,请不要忘记重建您的 wxWidgets 库!

    【讨论】:

    • 感谢您提及这一点。我会检查一下。
    猜你喜欢
    • 1970-01-01
    • 2022-11-27
    • 1970-01-01
    • 1970-01-01
    • 2017-09-02
    • 1970-01-01
    • 2017-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多