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.
-
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 dieTest.cpp
Datei aus und füge die folgenden Zeilen inTest.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 dieTest.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 headerFolgender Code dürfte also den Fehler versachen:
#include <Windows.h> #include "Your_Last_Header_File.h"
Und peng ist
Windows.h
mal wieder vorWinSock2.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.