problem beim compilieren - socket



  • hi. also das ist hier der quellcode. gehe grad n tutorial durch. aber da kommt ein fehler beim compilieren, denn ich nich verstehe.

    ###########################################
    fehler:
    17 F:\Dokumente und Einstellungen\dean\Desktop\Programmieren\c++\codz\socket\socket1.c
    parse error before '(' token

    17 F:\Dokumente und Einstellungen\dean\Desktop\Programmieren\c++\codz\socket\socket1.c
    `lpWSAData' declared as function returning a function

    17 F:\Dokumente und Einstellungen\dean\Desktop\Programmieren\c++\codz\socket\socket1.c
    `lpWSAData' declared as function returning a function

    48 F:\Dokumente und Einstellungen\dean\Desktop\Programmieren\c++\codz\socket\socket1.c
    redefinition of `startWinsock'

    23 F:\Dokumente und Einstellungen\dean\Desktop\Programmieren\c++\codz\socket\socket1.c
    `startWinsock' previously defined here
    ###########################################

    #include <windows.h>
    #include <winsock2.h>
    #include <stdio.h>
    
    int WSAStartup
    (
       WORD wVersionRequested, 
       LPWSADATA lpWSAData
       MAKEWORD(2,0);
    );
    
    int startWinsock()
    {
    	WSADATA wsa;
    	return WSAStartup(MAKEWORD(2,0),&wsa);
    }
    
    //Prototypen
    
    int statWinsock(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);
    }
    

    danke im voraus



  • Mhh...

    3rr0r schrieb:

    48 F:\Dokumente und Einstellungen\dean\Desktop\Programmieren\c++\codz\socket\socket1.c
    redefinition of `startWinsock'

    C? C++? (Konsole!!!)



  • ja ich mach ein winAPI projekt -> c file -> screiben -> compilen -> fehler...
    was mach ich denn falsch?



  • #include <windows.h>
    #include <winsock2.h>
    #include <stdio.h>
    
    int WSAStartup
    (
       WORD wVersionRequested, 
       LPWSADATA lpWSAData
       MAKEWORD(2,0);
    );                            /* Vereinbart. Und wo geschrieben? */
    
    /* int startWinsock()
    {
    	WSADATA wsa;
    	return WSAStartup(MAKEWORD(2,0),&wsa);
    } --- kann "wech". Machst du ja unten schon */
    
    //Prototypen
    
    int startWinsock(void);   // 'r' vergessen
    
    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);
    }
    

    Das sehe ich so auf die Schnelle.



  • PS: Vieleicht solltest du ein Konsolenprojekt anlegen.



  • hmm ich habs mit deinem quellcodes mal probiert. es geht fast 😉
    der meckert mit dem "MAKEWORD(2,0);"...aber weiss nich wieo...das dient doch dazu das es die Parameter übernimmt. so hab ich aus nem tutorial gelernt.

    danke



  • nimm mal das Semikolon weg 😉 😉 😉 😉 😉



  • hehe jo...aber mit gehts auch nich...bei dir denn?

    int WSAStartup 
    ( 
       WORD wVersionRequested,  
       LPWSADATA lpWSAData 
       MAKEWORD(2,0)
    );
    

    es geht irgendwie nich...hats denn bei dir geklappt?

    err0r



  • Nun fehlt noch das Komma hinter lpWSAData



  • hm..bin ich so blöd?

    int WSAStartup  
    (  
       WORD wVersionRequested,   
       LPWSADATA lpWSAData,
       MAKEWORD(2,0)
    );
    

    aber trotzdem:
    "9 F:\Dokumente und Einstellungen\dean\Desktop\Programmieren\c++\codz\socket\1\main.c
    parse error before '(' token"
    was is denn bitte an "MAKEWORD(2,0)" falsch? ich sehs enfach nich...sorry
    😞 😞 😞 😞



  • Hallo,

    nimm das hier:

    int WSAStartup  
    (  
       WORD wVersionRequested,   
       LPWSADATA lpWSAData  
       MAKEWORD(2,0) 
    );
    

    völlig raus aus deinem Programm, was soll das bewirken?

    WSAStartup ist bereits in winsock2.h deklariert, und muß nicht nochmal aufgeführt werden (Win32-API-Funktionen sind in den Headern deklariert...)!



  • wenn ich das aber ganz rausnehme kommt dies:

    - [Linker error] undefined reference to `WSAStartup@8'
    - F:\Dokumente und Einstellungen\dean\Desktop\Programmieren\c++\codz\socket\1\Makefile.win
    [Build Error] [Projekt1.exe] Error 1

    hab das in Devcpp gemacht.
    und in VSnet kommt das:
    Compiling...
    test1.cpp
    f:\Dokumente und Einstellungen\dean\Eigene Dateien\Visual Studio Projects\test1\test1.cpp(37) : fatal error C1010: unexpected end of file while looking for precompiled header directive

    Build log was saved at "file://f:\Dokumente und Einstellungen\dean\Eigene Dateien\Visual Studio Projects\test1\Debug\BuildLog.htm"
    test1 - 1 error(s), 0 warning(s)

    ---------------------- Done ----------------------

    Build: 0 succeeded, 1 failed, 0 skipped

    hm...komisch alles



  • Hallo,

    das ist nicht komisch, sondern deutet daraufhin, daß du vergessen hast, die Library für WinSock-Funktionen dem Linker bekanntzumachen. In VSNet machst du das über die Projekt-Einstellungen (dort die Library ws2_32.lib hinzufügen), wo genau man es bei DevCpp einstellt, kann ich dir jetzt nicht sagen (auch hier ws2_32.lib dazulinken)).

    Zum Fehler mit den "vorkompilierten Headern": auch das kann man bei VS einstellen, daß keine vorkompilierten Header verwendet werden

    MfG



  • habs geschafft 🙂
    dankeeeee


Anmelden zum Antworten