【问题标题】:winsock2 redefinition Merging issueswinsock2 重新定义合并问题
【发布时间】:2023-03-21 20:00:02
【问题描述】:

我试图将 2 个项目合并在一起,一个是 openGl 中的项目,另一个是 Windows 控制台应用程序,并实现了一些基本的 winsock 网络。 我开始通过包含原始网络程序中的所有#include 来合并它们,但我收到超过 100 个错误,告诉我我已经重新定义了 ws2def.h 和 winsock.h 中的所有结构和函数

所以这些是我的 main.cpp 中的#includes

#include <windows.h>
#include <stdio.h>
#include <mmsystem.h>
#include <math.h>
#include <time.h>

#include <list>
#include <iostream>

#include <stdlib.h>
#include <string>
#include <winsock2.h>

#pragma comment(lib, "ws2_32.lib")

【问题讨论】:

  • @BWG 我不知道是不是只有我一个人,但单独定义这一点并不总能奏效。我认为您还必须确保在 Windows.h 之前包含 WinSock2.h。
  • 确实如此。在 windows.h 之前包含 winsock2.h

标签: c++ merge winsock winsock2


【解决方案1】:
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#undef WIN32_LEAN_AND_MEAN

这可以防止 windows.h 包含旧的 winsock 头文件。

【讨论】:

    【解决方案2】:

    我在尝试将以前工作的 live555 服务器与编码器应用程序集成时遇到了同样的问题。

    我使用的每个库都包括 winsock 和 winsock2 来完成它们的任务。

    我首先尝试使用 WIN32_LEAN_AND_MEAN 定义,但这对我不起作用。

    在我的案例(VS 2013)中结束的工作是在 Configuration Properties -> Preprocessor -> Preprocessor Definitions 中添加 _WINSOCKAPI_ >

    这样做是在项目范围内设置 windows.h 在包含时不包含 winsock。

    此外,由于我的单独程序使用了 winsock 和 winsock2,因此我对这两个程序都使用了 winsock2 来统一代码。

    希望这对某人有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-08-23
      • 1970-01-01
      • 1970-01-01
      • 2010-11-25
      • 1970-01-01
      • 1970-01-01
      • 2013-10-27
      • 1970-01-01
      相关资源
      最近更新 更多