[SFML] Neudefinitions Fehler
-
Hey,
das hier ist mehr eine Frage aus Neugierde, da ich den eigentlichen Fehler schon gefunden habe, aber nun gut. Ich benutzte zur Zeit ein wenig die Multimedia-Library SFML und mir ist da was komisches aufgefallen:// produziert eine Reihe von Neudefintions Fehlern zum Beispiel: // // 1>c:\program files\microsoft sdks\windows\v6.0a\include\winsock2.h(1818): // error C2375: 'recv': Neudefinition; unterschiedliche Bindung // 1>c:\program files\microsoft sdks\windows\v6.0a\include\winsock.h(790): Siehe Deklaration von 'recv' #include <windows.h> #include <SFML/System.hpp> #include <SFML/Network.hpp> // funktioniert einwandfrei #include <SFML/System.hpp> #include <SFML/Network.hpp> #include <windows.h>Bei den Headern der STL ist dem nicht so, außerdem gibts ja auch Sachen wie Include-Guards und so. Wieso funktioniert das eine, aber das andere nicht?
Edit: Jetzt hab ichs irgendwie wieder ganz zerschossen und die Fehler tauchen bei beiden Varianten auf

-
Das ist ein Windows Headerfile Problem. Geschichtlich bedingt inkludiert
<windows.h>die<winsock.h>. Dies ist allerdings die alte Version der Windowssockets. Die neue Version hat ja das Headerfile<windsock2.h>. Die beiden habe natürlich unterschiedliche Header Guards, aber deklarieren gleiche Funktionsnamen.Weitere Informationen findest du hier (unten bei note):
http://msdn.microsoft.com/en-us/library/ms737629.aspxUnd hier (auch ganz unten):
http://msdn.microsoft.com/en-us/library/aa383745.aspxAlso ist die Lösung das Makro
WIN32_LEAN_AND_MEAN.Grüssli
-
Aha, das Makro hatte ich schon öfter gesehen, aber da es bei mir nie (zumindest keinen offensichtlichen) Effekt erzielte, ignorierte ich es. Vielen Dank! Gut zu wissen
