2012-07-15 75 views
10

我正在编译Visual C++ 2010中的项目,但我在Winsock重新定义方面遇到问题。Winsock重新定义错误

首先我得到:

syntax error : identifier 'SOCKADDR_STORAGE' 

但是,如果我有Winsock的或Winsock2的或ws2tcpip我得到许多错误,像这样的:

error C2011: 'sockaddr' : 'struct' type redefinition 
error C2011: 'WSAData' : 'struct' type redefinition 
error C2011: 'linger' : 'struct' type redefinition 
+0

你可以发布代码示例吗?还可以尝试添加'#define WIN32_LEAN_AND_MEAN' – ctor 2012-07-15 21:03:31

+0

让我们看看违规模块中的#include块。 – wallyk 2012-07-15 21:03:52

+0

我没有任何花哨的包括,我的这些//#包括 的#include //#包括我必须把它们列入几个.cpp文件。 – Cooker 2012-07-15 21:06:30

回答

20

你的问题是,包括Windows.h,你是也已经包括winsock.h。正是在这里,你的问题就出现为包括winsock2.hws2tcpip.h将尝试重新定义一些定义的winsock.h

通过您Windows.h之前使用#define WIN32_LEAN_AND_MEAN包括您在内的很多附带Windows.h

多余的东西停止编译