|
Hier möchte ich kurz eine Lösung vorstellen, für alle die Probleme mit dem Kompilieren der Windows Socket API ( winsock2.h ) haben. Das Problem ergibt sich durch macro redifintions: 1>\windows\v6.1\include\ws2def.h(91) : warning C4005: 'AF_IPX': Makro-Neudefinition \windows\v6.1\include\winsock.h(460): Siehe vorherige Definition von 'AF_IPX' \windows\v6.1\include\ws2def.h(127) : warning C4005: 'AF_MAX': Makro-Neudefinition \windows\v6.1\include\winsock.h(479): Siehe vorherige Definition von 'AF_MAX' \windows\v6.1\include\winsock.h(402): Siehe vorherige Definition von 'SO_DONTLINGER' \windows\v6.1\include\ws2def.h(207) : error C2011: 'sockaddr': 'struct' Typneudefinition \windows\v6.1\include\winsock.h(485): Siehe Deklaration von 'sockaddr' \windows\v6.1\include\ws2def.h(385) : error C2143: Syntaxfehler: Es fehlt '}' vor 'Konstante' \windows\v6.1\include\ws2def.h(385) : error C2143: Syntaxfehler: Es fehlt ';' vor 'Konstante' \windows\v6.1\include\ws2def.h(385) : error C2059: Syntaxfehler: 'Konstante' \windows\v6.1\include\ws2def.h(438) : error C2143: Syntaxfehler: Es fehlt ';' vor '}' \windows\v6.1\include\ws2def.h(519) : warning C4005: 'IN_CLASSA': Makro-Neudefinition \windows\v6.1\include\winsock.h(287): Siehe vorherige Definition von 'IN_CLASSA' \windows\v6.1\include\ws2def.h(525) : warning C4005: 'IN_CLASSB': Makro-Neudefinition \windows\v6.1\include\winsock.h(293): Siehe vorherige Definition von 'IN_CLASSB' \windows\v6.1\include\ws2def.h(531) : warning C4005: 'IN_CLASSC': Makro-Neudefinition \windows\v6.1\include\winsock.h(299): Siehe vorherige Definition von 'IN_CLASSC' \windows\v6.1\include\ws2def.h(542) : warning C4005: 'INADDR_ANY': Makro-Neudefinition \windows\v6.1\include\winsock.h(304): Siehe vorherige Definition von 'INADDR_ANY' \windows\v6.1\include\ws2def.h(578) : error C2011: 'sockaddr_in': 'struct' Typneudefinition \windows\v6.1\include\winsock.h(312): Siehe Deklaration von 'sockaddr_in' \windows\v6.1\include\winsock2.h(132) : error C2011: 'fd_set': 'struct' Typneudefinition \windows\v6.1\include\winsock.h(68): Siehe Deklaration von 'fd_set' \windows\v6.1\include\winsock2.h(167) : warning C4005: 'FD_SET': Makro-Neudefinition Das Problem ist die Include Reihenfolge der Windows Header Dateien. Eigentlich ist man gewöhnt zuerst die <windows.h> zu includieren, danach alles andere. Leider ist die winsock2.h eine Ausnahme, diese muss vor der windows.h includier werden. Weiterführende Links:
|
|
Last Updated on Wednesday, 14 October 2009 19:45 |