WinSock Fehlermeldungen



  • Hallo cpp Forum,
    Ich möchte mich in die Netzwerkprogrammierung einarbeiten aber ich habe ein Problem. Nachdem ich die Winsock Headerdatei inkludiert habe und den unten gezeigten Code zu kompelieren versucht habe, kommen sehr viele Fehlermeldungen die nichts mit meinem code zu tun haben sondern Neudefinitionen in der WinSock Headerdatei bemängeln.

    Hier der Code des Projekts:

    #include <windows.h>
    #include <winsock2.h>
    #include <stdio.h>
    
    #pragma comment(lib, "ws2_32.lib")
    
    int startWinsock(void);
    int main()
    
    {
      long rc;
      rc=startWinsock();
      if(rc!=0)
    
      {
        printf("Fehler: startWinsock, fehler code: %d\n",rc);
    
        return 1;
      }
      else
      {
        printf("Winsock gestartet!\n");
      }
      return 0;
    }
    int startWinsock(void)
    {
      WSADATA wsa;
      return WSAStartup(MAKEWORD(2,0),&wsa);
    }
    

    Ich sehen keine Fehler darin, einige der in der Konsole angezeigten Fehler:

    1>------ Erstellen gestartet: Projekt: Projekt_Peter, Konfiguration: Debug Win32 ------
    1> main.cpp
    1>c:\program files (x86)\windows kits\8.0\include\shared\ws2def.h(96): warning C4005: 'AF_IPX': Makro-Neudefinition
    1> c:\program files (x86)\windows kits\8.0\include\um\winsock.h(452): Siehe vorherige Definition von 'AF_IPX'
    1>c:\program files (x86)\windows kits\8.0\include\shared\ws2def.h(136): warning C4005: 'AF_MAX': Makro-Neudefinition
    1> c:\program files (x86)\windows kits\8.0\include\um\winsock.h(471): Siehe vorherige Definition von 'AF_MAX'
    1>c:\program files (x86)\windows kits\8.0\include\shared\ws2def.h(173): warning C4005: 'SO_DONTLINGER': Makro-Neudefinition
    1> c:\program files (x86)\windows kits\8.0\include\um\winsock.h(394): Siehe vorherige Definition von 'SO_DONTLINGER'
    1>c:\program files (x86)\windows kits\8.0\include\shared\ws2def.h(217): error C2011: 'sockaddr': 'struct' Typneudefinition
    1> c:\program files (x86)\windows kits\8.0\include\um\winsock.h(477): Siehe Deklaration von 'sockaddr'
    1>c:\program files (x86)\windows kits\8.0\include\shared\ws2def.h(414): error C2059: Syntaxfehler: 'Konstante'
    1>c:\program files (x86)\windows kits\8.0\include\shared\ws2def.h(414): error C3805: 'Konstante': unerwartetes Token, es wurde entweder '}' oder ein ',' erwartet
    1>c:\program files (x86)\windows kits\8.0\include\shared\ws2def.h(549): warning C4005: 'IN_CLASSA': Makro-Neudefinition
    1> c:\program files (x86)\windows kits\8.0\include\um\winsock.h(279): Siehe vorherige Definition von 'IN_CLASSA'
    1>c:\program files (x86)\windows kits\8.0\include\shared\ws2def.h(555): warning C4005: 'IN_CLASSB': Makro-Neudefinition
    1> c:\program files (x86)\windows kits\8.0\include\um\winsock.h(285): Siehe vorherige Definition von 'IN_CLASSB'
    1>c:\program files (x86)\windows kits\8.0\include\shared\ws2def.h(561): warning C4005: 'IN_CLASSC': Makro-Neudefinition
    1> c:\program files (x86)\windows kits\8.0\include\um\winsock.h(291): Siehe vorherige Definition von 'IN_CLASSC'
    1>c:\program files (x86)\windows kits\8.0\include\shared\ws2def.h(572): warning C4005: 'INADDR_ANY': Makro-Neudefinition
    1> c:\program files (x86)\windows kits\8.0\include\um\winsock.h(296): Siehe vorherige Definition von 'INADDR_ANY'
    1>c:\program files (x86)\windows kits\8.0\include\shared\ws2def.h(574): warning C4005: 'INADDR_BROADCAST': Makro-Neudefinition
    1> c:\program files (x86)\windows kits\8.0\include\um\winsock.h(298): Siehe vorherige Definition von 'INADDR_BROADCAST'
    1>c:\program files (x86)\windows kits\8.0\include\shared\ws2def.h(608): error C2011: 'sockaddr_in': 'struct' Typneudefinition

    Wisst ihr was der Grund dafür ist?



  • Ich denke es geht mit #define _WINSOCKAPI_ vor dem windows.h, oder in dem Fall windows.h einfach weglassen (wird eh von winsock2.h inkludiert glaub ich).



  • Vielen Dank, kaum habe ich das Makro eingefügt ist das Programm gelaufen 😃
    Aber warum, in Tutorials und Büchern wird das nie angegeben zumindest bei mir?

    Lg Max



  • Ist vielleicht erst seit neueren Headerversionen so.


Anmelden zum Antworten