error LNK2019



  • Spontan würde ich sagen, du mußt die ws2_32.lib hinzulinken.
    Allerdings wundert mich, daß der Compiler die Namen offenbar in C++-Manier dekoriert. Wenn die Funktionen als extern "C" definiert sind (was in winsock2.h aber der Fall ist), dürfte das eigentlich nicht passieren...



  • @Ominion
    Folgende Librarys sind includiert:
    #include "stdafx.h"
    #include <windows.h>
    #include <iostream>
    #include <winsock2.h>

    @audacia
    Wie kann ich ws2_32.lib einbinden? (project -> properties -> ???)



  • Also Librarys sind immer die mit .lib am Ende das was du meintest sind Header. Und eigentlich wenn du ein Projekt erstellt hast unter Projekt einstellungen müsste das irgendwo gehen.

    Mfg Ominion



  • albertk13 schrieb:

    Wie kann ich ws2_32.lib einbinden? (project -> properties -> ???)

    Ich habe gerade nur Turbo C++ installiert, für VC muß dir die Frage jemand anders beantworten. Jedenfalls geht es entweder in den Projektoptionen, oder du fügst die Library einfach dem Projekt hinzu.



  • probiere es mal mit:

    #pragma (lib, "ws2_32.lib");
    

    Mfg Ominion



  • Unschön, weil unnötigerweise compilerabhängig...



  • ist aber besser als gar nichts...also, probiere es, gebe dich damit aber nicht zufrieden^^

    MFg Ominion



  • #pragma (lib, "ws2_32.lib");
    funktioniert nicht bringt immer noch die gleichen wahrnungen
    gibt es nicht eine andere möglichkeit eine library in ein programm einzubinden?
    oder kann es sein das ich diese nicht auf der festplatte habe ( mit suchen werden mir aber mehrere angezeigt)



  • Hallo

    Du kannst lib auch in den Projekteigenschaften einbinden. Bei VS unter zusätzliche Abhängigikeiten.

    chrische



  • audacia schrieb:

    Allerdings wundert mich, daß der Compiler die Namen offenbar in C++-Manier dekoriert. Wenn die Funktionen als extern "C" definiert sind (was in winsock2.h aber der Fall ist), dürfte das eigentlich nicht passieren...

    Hast du evtl. in der Headerdatei irgendetwas verändert? Oder gar irgendwo ein "#undef __cplusplus" stehen?
    Ansonsten zeig mal ein wenig Code...



  • Das ist jetzt der komplette code:
    #include "stdafx.h"
    #include <windows.h>
    #include <iostream>
    #include <winsock2.h>
    #pragma (lib, "ws2_32.lib"); // hilft nichts
    using namespace std;

    //Prototypen
    int startWinsock(void);

    int main(int argc, _TCHAR* argv[])
    {
    long rc;
    SOCKET acceptSocket;
    SOCKET connectedSocket;
    SOCKADDR_IN addr;
    char buf[256];
    char buf2[300];

    // Winsock starten
    rc=startWinsock();
    if(rc!=0)
    {
    cout << "Fehler: startWinsock, fehler code:" << rc ;
    return 1;
    }
    else
    {
    cout << "winsock gestartet";
    }

    // Socket erstellen
    acceptSocket=socket(AF_INET,SOCK_STREAM,0);
    if(acceptSocket==INVALID_SOCKET)
    {
    cout << "Fehler: Der Socket konnte nicht erstellt werden, fehler code: " << WSAGetLastError();
    return 1;
    }
    else
    {
    cout << "Socket erstellt!";
    }

    // Socket binden
    memset(&addr,0,sizeof(SOCKADDR_IN));
    addr.sin_family=AF_INET;
    addr.sin_port=htons(12345);
    addr.sin_addr.s_addr=INADDR_ANY;
    rc=bind(acceptSocket,(SOCKADDR*)&addr,sizeof(SOCKADDR_IN));
    if(rc==SOCKET_ERROR)
    {
    cout << "Fehler: bind, fehler code: " << WSAGetLastError();
    return 1;
    }
    else
    {
    cout << "Socket an port 12345 gebunden\n";
    }

    // In den listen Modus
    rc=listen(acceptSocket,10);
    if(rc==SOCKET_ERROR)
    {
    cout << "Fehler: listen, fehler code: " << WSAGetLastError();
    return 1;
    }
    else
    {
    cout << "acceptSocket ist im listen Modus....\n";
    }

    // Verbindung annehmen
    connectedSocket=accept(acceptSocket,NULL,NULL);
    if(connectedSocket==INVALID_SOCKET)
    {
    cout << "Fehler: accept, fehler code: \n" << WSAGetLastError();
    return 1;
    }
    else
    {
    cout << "Neue Verbindung wurde akzeptiert!\n";
    }

    // Daten austauschen
    while(rc!=SOCKET_ERROR)
    {
    rc=recv(connectedSocket,buf,256,0);
    if(rc==0)
    {
    cout << "Server hat die Verbindung getrennt..\n";
    break;
    }
    if(rc==SOCKET_ERROR)
    {
    cout << "Fehler: recv, fehler code: %d\n" << WSAGetLastError();
    break;
    }
    buf[rc]='\0';
    cout << "Client sendet: \n" << buf;
    sprintf(buf2,"Du mich auch %s",buf);
    rc=send(connectedSocket,buf2,strlen(buf2),0);
    }
    closesocket(acceptSocket);
    closesocket(connectedSocket);
    WSACleanup();
    return 0;
    }

    int startWinsock(void)
    {
    WSADATA wsa;
    return WSAStartup(MAKEWORD(2,0),&wsa);
    }

    an der header datei hab ich nichts verändert!!
    @chrische5 Falls du 'project -> properties -> ???' meinst könntest du mir das genauer beschreiben weil ich mich da nicht besonders auskenne


Anmelden zum Antworten