2012-07-15 9 views
10

Kompiluję projekt w Visual C++ 2010, ale mam problemy z niektórymi redefinicjami Winsock.Błędy redefinition Winsock

Przede wszystkim uzyskać:

syntax error : identifier 'SOCKADDR_STORAGE' 

Ale jeśli to winsock lub Winsock2 lub ws2tcpip otrzymuję wiele błędów, takie jak:

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

Czy możesz wysłać próbkę kodu? Spróbuj także dodać '#define WIN32_LEAN_AND_MEAN' – ctor

+0

Zobaczmy blok' # include' z modułu naruszającego prawa. – wallyk

+0

Nie mam żadnych fantazyjnych obejmuje, mam te # # obejmują #include // # include Muszę uwzględnić je w kilku plikach .cpp. – Cooker

Odpowiedz

20

Twoim problemem jest to, że w tym Windows.h, jesteś również zawiera już winsock.h. Jest tu problem powstaje w tym winsock2.h lub ws2tcpip.h podejmie próbę przedefiniowania niektórych definicji w winsock.h

Korzystając #define WIN32_LEAN_AND_MEAN przed Windows.h obejmują zatrzymać kompilator z tym wiele dodatkowych rzeczy, które pochodzi z Windows.h