Visual C++ Linker Error



  • Also mein problem is dieses
    ich versuche mit winsock geschriebene sachen zu compileren
    aber bekame erst nen include error diesen hab korrigiert in
    dem ich Platform SDK installiert un die Includes davon in mein
    Visual C++ Eingefügt
    bis hier hin alle ok
    aber nu hab ich wieder neue fehler bekommen
    wovon ich nicht kapiere voher die kommen

    Als ich mein script versucht hab zu compilen hab ich diesen fehler bekommen

    Resultat :

    ------ Erstellen gestartet: Projekt: Ro2 Sandbox, Konfiguration: Debug Win32 ------
    Kompilieren...
    login.cpp
    Verknüpfen...
    login.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_recv@16" in Funktion "_main".
    login.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_send@16" in Funktion "_main".
    login.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_accept@12" in Funktion "_main".
    login.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_listen@8" in Funktion "_main".
    login.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_bind@12" in Funktion "_main".
    login.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_htons@4" in Funktion "_main".
    login.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_socket@12" in Funktion "_main".
    login.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_WSAStartup@8" in Funktion "_main".
    H:\Dokumente und Einstellungen\Onurhan\Eigene Dateien\Visual Studio 2005\Projects\Ro2 Sandbox\Debug\Ro2 Sandbox.exe : fatal error LNK1120: 8 nicht aufgelöste externe Verweise.
    Das Buildprotokoll wurde unter "file://h:\Dokumente und Einstellungen\Onurhan\Eigene Dateien\Visual Studio 2005\Projects\Ro2 Sandbox\Ro2 Sandbox\Debug\BuildLog.htm" gespeichert.
    Ro2 Sandbox - 9 Fehler, 0 Warnung(en)
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
    

    ich erhalte immer diesen fehler wen ich verusche irgend was mit winsock zu compilieren...

    hoffe mir kann jemand helfen

    hier mein code :

    #include <stdio.h>
    #include <iostream>
    #include <winsock.h>
    
    void dump(const unsigned char* buf, int len)
    {
        int i = 0;
    
        for(i; i < len; ++i)
        {
            printf("%02X ", buf[i]);   
    
            if((i+1)%16 == 0)
            {
                printf("\n");   
            }
        }   
    
        if((i+1)%16 != 0)
        {
            printf("\n");   
        }
    
        printf("\n");    
    }
    
    int main(int argc, char* argv[])
    {
    	// primero inicializamos la libreria
    	WSAData wsaData;
    	WSAStartup( MAKEWORD(1, 0), &wsaData );
    
    	// creamos el socket
    	SOCKET m_socket = socket( PF_INET, SOCK_STREAM, 0 );
    
    	if( m_socket == -1 )
    	{
            perror("socket()");
    	}
    
    	// llenamos la informacion
    	sockaddr_in addr;
    
    	addr.sin_family = AF_INET;
    	addr.sin_port   = htons( 6000 );
    	addr.sin_addr.s_addr = INADDR_ANY;
    	memset( &(addr.sin_zero), 0x00, 8 );
    
    	// lo atamos al puerto
    	if( bind( m_socket, (sockaddr*)&addr, sizeof(sockaddr) ) == -1 )
    	{
    		perror("bind()");
    	}
    
    	// lo hacemos que escuche
    	if( listen( m_socket, 10 ) == -1 )
    	{
    		perror("listen()");
    	}
    
    	int         size;
    	sockaddr_in caddr;
    
        int len = 0;
        unsigned char buf[10000];
    
    	size = sizeof( sockaddr_in );
    
    	SOCKET client = accept( m_socket, (sockaddr*)&caddr, &size );
    
        printf("\n\n== SMSG 4 ==\n\n");    
    
        send(client, "\x04\x00\x01\x01", 4, 0);
    
        len = recv(client, (char*)buf, sizeof(buf), 0);
    
        printf("\n\n== CMSG 4 ==\n\n");
    
        dump(buf, len);
    
        printf("\n\n== SMSG 5 ==\n\n");
    
        send(client, "\x29\x00\x01\x02\x01\x01\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 41, 0);      
    
        len = recv(client, (char*)buf, sizeof(buf), 0);
    
        printf("\n\n== CMSG 5 ==\n\n");
    
        dump(buf, len);
    
        printf("\n\n== SMSG 6 ==\n\n");
    
        send(client, "\x29\x00\x01\x03\x01\x01\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 41, 0);      
    
        len = recv(client, (char*)buf, sizeof(buf), 0);
    
        printf("\n\n== CMSG 6 ==\n\n");
    
        dump(buf, len);    
    
        printf("\n\n== SMSG 7 ==\n\n");
    
        send(client, "\x29\x00\x01\x04\x01\x00\x00\x7F\x71\x17\x00\x00\x41\x00\x41\x00\x41\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 41, 0);      
    
        len = recv(client, (char*)buf, sizeof(buf), 0);
    
        printf("\n\n== CMSG 7 ==\n\n");
    
        dump(buf, len);    
    
    	while(1)
    	{
    
    	}
    
    	// winsock necesita esto
    	WSACleanup();
    }
    

    und em Sry für meine lange post
    und nochma sry wens nit hier hin gehört
    Ich suche schon lange nach der lösung für
    mein problem aber finde irgendwie nichts...



  • Du musst die ws2_32.lib noch mit in die Linkereinstellungen des Projektes aufnehmen.



  • Du musst die ws2_32.lib (aus dem PSDK) hinzubinden:

    Property Pages => Linker => Input => "Additional Dependencies"

    Ggf mit volem Pfad oder unter Linker => General das Verzeichnis der Datei als "Additional Directory" angeben.

    Grüsse

    *this

    P.S.: Ist kein Compiler, sondern ein Linker-Error



  • also ich hab jetz die ws2_32.lib eingebunden aber hab jetz wieder andere fehler bekommen

    Kompilieren...
    login.cpp
    Verknüpfen...
    LINK : fatal error LNK1181: Eingabedatei "H:\Programme\Microsoft.obj" kann nicht geöffnet werden.
    Das Buildprotokoll wurde unter "file://h:\Dokumente und Einstellungen\Onurhan\Eigene Dateien\Visual Studio 2005\Projects\Ro2 Sandbox\Ro2 Sandbox\Debug\BuildLog.htm" gespeichert.
    Ro2 Sandbox - 1 Fehler, 0 Warnung(en)
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
    

    PS : Ich hab den Titel jetzt auch geändert



  • nach recherche habe ich den eindruck, du hast ev. bei der installation was vergessen
    http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/

    ev. nochmal ein neues projekt erstellen.

    aber nachher kommen die microsoftexperten 😉



  • Anzulo schrieb:

    also ich hab jetz die ws2_32.lib eingebunden aber hab jetz wieder andere fehler bekommen

    Kompilieren...
    login.cpp
    Verknüpfen...
    LINK : fatal error LNK1181: Eingabedatei "H:\Programme\Microsoft.obj" kann nicht geöffnet werden.
    Das Buildprotokoll wurde unter "file://h:\Dokumente und Einstellungen\Onurhan\Eigene Dateien\Visual Studio 2005\Projects\Ro2 Sandbox\Ro2 Sandbox\Debug\BuildLog.htm" gespeichert.
    Ro2 Sandbox - 1 Fehler, 0 Warnung(en)
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
    

    PS : Ich hab den Titel jetzt auch geändert

    hört sich an als ob du den vollen pfad angegeben hast bei den libraries.
    da c:\Programme\Microsoft VisualStudio\wasweissichwodielibsliegen\ws32_2.lib
    nicht richtig aufgelöst wird.
    standardmässig sind die ms libpaths eh definiert, das eingeben von ws32_2.lib müsst ausreichen.



  • es hat geklappt vielen dank
    habt mir wirklich sehr geholfen
    ich such schon so lang nach der lösung
    endlich kann ich weiter lernen^^


Anmelden zum Antworten