I am compiling a project in Visual C++ 2010, but I have problems with some Winsock redefinitions.
First of all I get:
syntax error : identifier 'SOCKADDR_STORAGE'
But if I include winsock or winsock2 or ws2tcpip i get many errors like these:
error C2011: 'sockaddr' : 'struct' type redefinition
error C2011: 'WSAData' : 'struct' type redefinition
error C2011: 'linger' : 'struct' type redefinition
Your problem is that by including Windows.h
, you are also already including winsock.h
. It is here your problem arises as including winsock2.h
or ws2tcpip.h
will attempt to redefine some of the definitions in winsock.h
By using #define WIN32_LEAN_AND_MEAN
before your Windows.h
include you stop the compiler from including a lot of the extra stuff that comes with Windows.h
来源:https://stackoverflow.com/questions/11495589/winsock-redefinition-errors