Winsock2 重新定义合并问题

winsock2 redefinition Merging issues

本文关键字:合并 问题 定义 新定义 Winsock2      更新时间:2023-10-16

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

所以这些是我的主要 #includes.cpp

#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")
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#undef WIN32_LEAN_AND_MEAN

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

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

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

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

在我的情况下(VS 2013)结束工作是在配置属性->预处理器->预处理器定义中添加_WINSOCKAPI_

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

此外,由于我的单独程序使用 winsock 和 winsock2,我通过将 winsock2 统一了代码。

希望这对某人有所帮助!