Winsock2.h



  • Wenn ich die Winsock2.h in mein Programm includieren will, bringt der DevC++4 folgenden Fehler:

    2 main.cpp
    C:\DEV-C_~1\INCLUDE\winsock2.h:46: unbalanced `#endif'
    

    Was soll das? Ich hab dann mal versucht das #endif wegzumachen, dann kommt aber folgendes:

    2 main.cpp
    C:\DEV-C_~1\INCLUDE\winsock2.h:43: syntax error before `1'
    

    Das hier ist die ganze Winsock2.h:

    /*
    
      Definitions for winsock 2
    
      FIXME: This is mostly a stub for now. Taken from the Wine project.
    
      Portions Copyright (c) 1980, 1983, 1988, 1993
      The Regents of the University of California.  All rights reserved.
    
      Portions Copyright (c) 1993 by Digital Equipment Corporation.
     */
    
    #ifndef _WINSOCK2_H
    #define _WINSOCK2_H
    #define _GNU_H_WINDOWS32_SOCKETS
    #ifdef __cplusplus
    extern "C" {
    #endif
    
    #include <winsock.h>
    
    #define FD_MAX_EVENTS 10
    
    #define FD_READ_BIT     0
    #define FD_WRITE_BIT    1
    #define FD_OOB_BIT      2
    #define FD_ACCEPT_BIT   3
    #define FD_CONNECT_BIT  4
    #define FD_CLOSE_BIT    5
    
    typedef struct _WSANETWORKEVENTS {
      long lNetworkEvents;
      int iErrorCode[FD_MAX_EVENTS];
    } WSANETWORKEVENTS, *LPWSANETWORKEVENTS;
    
    typedef HANDLE WSAEVENT;
    #define WSACreateEvent() CreateEvent(NULL, TRUE, FALSE, NULL)
    /* etc */
    
    int WINAPI WSAEnumNetworkEvents(SOCKET s, WSAEVENT hEventObject, LPWSANETWORKEVENTS lpNetworkEvents);
    int WINAPI WSAEventSelect(SOCKET s, WSAEVENT hEventObject, long lNetworkEvents);
    
    ifdef __cplusplus
    }
    #endif
    #endif // <----------------DAS HAB ICH MAL WEGGEMACHT, BRINGT ABER DEN 2TEN FEHLER
    

    😕 😕 😕



  • So gehts, ´(zumindest bei mir)

    #ifdef __cplusplus
    }
    #endif
    #endif // <----------------DAS HAB ICH MAL WEGGEMACHT, BRINGT ABER DEN 2TEN FEHLER

    ifdef __cplusplus fehlt der Gartenzaun



  • Danke, das war genau der Fehler. Leider funktioniert es immer noch nicht. Er bringt jetzt die Warnung

    c:\eigene dateien\sockets\main.o(.text+0x1d6):main.cpp: undefined reference to `WSAStartup@8'
    

    der Aufruf sieht lediglich so aus:

    WSADATA wsa;
    WSAStartup( 0x0200, &wsa );
    

    Ich versteh das nicht, in der winsock.h ist die Funktion genau so definiert. Warum nimmt er das nicht an?



  • Hast du nicht das Platform SDK?
    Wenn man da WSAStartup im Index eintippt, steht rechts unten folgendes:

    Requirements
    Windows NT/2000/XP: Included in Windows NT 3.1 and later.
    Windows 95/98/Me: Included in Windows 95 and later.
    Header: Declared in Winsock2.h.
    Library: Use Ws2_32.lib.

    Du musst also beim linken auch noch ws2_32.lib angeben. 🙂



  • bei mir reicht es wenn ich in den "project options" unter "further object files or linker options" -lwsock32 angebe....(die datei liegt im ordner lib und nennt sich libwsock32.a)

    [ Dieser Beitrag wurde am 02.10.2002 um 19:15 Uhr von CrossFire editiert. ]



  • Danke Euch beiden, es hat funktioniert.


Anmelden zum Antworten