WinSock2.h 中的重定义错误
redefinition errors in WinSock2.h
包括winsock2.h,在一个项目的文件中。
在 - 中出现许多错误 -WinSock2.h(109) : error C2011: 'fd_set' : 'struct' type redefinition
带有相应的 -
WinSock.h(54) : see declaration of 'fd_set'
我没有看到winsock.h包含在任何标题中。
项目中是否有任何可能导致此问题的设置?
编辑
但是,我在另一个文件中使用了windows.h:
http://cboard.cprogramming.com/windows-programming/41212-strange-msvc-winsock2-compile-error.html
编辑 2
在标题中,我有:
#include <winsock2.h>
#include <iphlpapi.h>
#include "MyFilesFileX.h" <-which #include <windows.h>
我有根据的猜测是包含标头的顺序,即首先包含winsock2.h
(第一个含义在windows.h
之前),或者在包含windows.h
之前定义WIN32_LEAN_AND_MEAN,这会阻止 windows.h 包含 Winsock v1。
#include <winsock2.h>
#include <windows.h>
-或-
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <winsock2.h>
在一番头痛之后:我确保在任何#include "windows.h"
和"#include "Winsock.h"
之前都有#include "Winsock2.h"
,这解决了这个案子。
检查了递归包含,我发现了包含(递归)一些#include "windows.h"
的头文件,"#include "Winsock.h"
并编写了一个#include "Winsock2.h"
。 在此文件中,我添加了#include "Winsock2.h"
作为第一个包含。
个查看并建立此顺序,先#include "Winsock2.h"
后#include "windows.h"
- 使用命名空间时出现多个定义错误
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 尝试调用 .h 文件中定义的变量时出现变量未定义错误
- 在头文件和 cpp 文件中使用一次 #pragma 时出现结构重定义错误
- 链接阶段出现多重定义错误
- 避免模板类中的重定义错误
- 即使我没有包含多个文件,C++中的多个定义错误
- 跨多个类的全局变量而不会出现重定义错误?
- 尝试运行 wasm 函数时出现模块未定义错误
- C++ 预期的左大括号以及重定义错误
- C++:成员的越界声明必须是纯虚函数的定义错误
- c++中数组的未定义错误
- Visual C:模板类中的自定义错误消息
- 为什么C++模板不会导致多个定义错误?
- 只有一个定义/声明时标头声明变量的多堆定义错误
- C++ 在多个其他类中使用单个类 - 编译时出现多个定义错误
- 基类未定义.错误 C2504
- Q 斯坦达项重定义错误
- 可视化C++中的结构定义错误
- VC++ C2011 重定义错误 - 未使用的头文件