Winsock2.h Redefinition-Fehler



  • Hallo Leute,

    ich möchte mit WinSock2 arbeiten.

    aber beim Includen, kommen Tonnen an "Redefinition"-Fehlern.

    z.B.:

    3>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h(238,25): error C2011: 'sockaddr': 'struct' type redefinition
    3>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\winsock.h(482): message : see declaration of 'sockaddr'
    3>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h(440,5): error C2143: syntax error: missing '}' before 'constant'
    3>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h(440,5): error C2059: syntax error: 'constant'
    3>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h(494,1): error C2143: syntax error: missing ';' before '}'
    3>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h(494,10): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    3>C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\shared\ws2def.h(494,20): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
    
    

    Ich hoffe ihr habt Erfahrung damit und könnt mir helfen.

    Danke im voraus.


  • Mod

    Hast du schon einen der hier gelisteten Lösungsvorschläge ausprobiert?



  • @efjam88
    Prüfe mal ob winsock2.h vor windows.h inkludiert wird und stelle dies ggf. sicher.

    So habe ich WinSock zum Laufen gebracht.



  • hi,

    also die meisten Google-Ergebnisse hab ich bereits gesehen...

    In einem früheren Projekt hat folgendes funktioniert:

    #define WIN32_LEAN_AND_MEAN
    #define _WINSOCKAPI_
    
    #include <winsock2.h>
    #include <ws2tcpip.h>
    
    #include <Windows.h>
    

    Bei diesem Versuch jedoch nicht.



  • @efjam88
    Probiere doch mal folgendes: Lege ein neues Dateipaar (Test.h / Test.cpp) an, schalte Precompiled Header für die Test.cpp Datei aus und füge die folgenden Zeilen in Test.cpp ein. Kompiliert das?

    #include <winsock2.h>
    #include <ws2tcpip.h>
    #include <Windows.h>
    


  • OK, das funktioniert.

    Aber wie komm ich mit meinem aktuellen Projekt weiter?



  • @efjam88
    Ich verstehe nicht so ganz deine Frage. Du musst einfach die Test.cpp, Test.h umbenennen, in deinem Projekt hinzufügen und entsprechend um deine Funktionen erweitern. Und selbst die Verwendung von WinSock2 Datentypen im Header funktioniert.

    Das Problem ist nämlich die Funktionsweise #include. Zitat: Searches for a header identified uniquely by h-char-sequence and replaces the directive by the entire contents of the header

    Folgender Code dürfte also den Fehler versachen:

    #include <Windows.h>
    
    #include "Your_Last_Header_File.h"
    

    Und peng ist Windows.h mal wieder vor WinSock2.h inkludiert.



  • Ich hab die Test.cpp/Test.h in nem neuen Projekt getestet.

    Ich hab jede Menge Dateien und hab ne weile rumprobiert.

    Sieht so aus als ob es funktioniert. Lag vielleicht an ner anderen Stelle.

    Wenn mein Programm doch nicht funktioniert, melde ich mich nochmal.

    Danke für eure Zeit.


Anmelden zum Antworten