将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 "\MyFiles\FileX.h" <-which #include <windows.h>
答案 0 :(得分:51)
我受过教育的猜测是包含标题的顺序,即首先包含winsock2.h
(在windows.h
之前具有第一个含义),或者在包含windows.h
之前定义WIN32_LEAN_AND_MEAN,这会阻止windows.h来自winsock v1。
#include <winsock2.h>
#include <windows.h>
-OR -
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <winsock2.h>
答案 1 :(得分:3)
经过一番头痛:我确保#include "Winsock2.h"
在任何#include "windows.h"
和"#include "Winsock.h"
之前,这就解决了这个问题。
我检查了递归包含,我发现了包含(递归)某些#include "windows.h"
和"#include "Winsock.h"
的头文件并写了#include "Winsock2.h"
。在这个文件中,我添加了#include "Winsock2.h"
作为第一个包含。
只需耐心,请逐个查看并确定此订单,先#include "Winsock2.h"
然后#include "windows.h"