warum linkerror



  • Hallo,

    bei diesem programm bekomme ich einen linkerror. wieso?

    danke

    #include <iostream>
    #include <string>
    #include <cmath>
    #include <fstream>
    #include <vector>
    #include <iterator>
    #include <algorithm>
    #include <sstream>
    #include <istream>
    #include <cstdlib>
    #include <windows.h>
    #include <cstring>
    #define NUM_ELEMENTS(x) (sizeof((x)) / sizeof((x)[0])) //

    using namespace std;

    int main () {

    ........

    }

    BOOL IP_auslesen(char* IP_ADRESSE)
    {
    char IP_ADDRESSE[16];
    struct hostent* h;
    WSADATA wsaData;
    UCHAR ucAddress[4];
    CHAR szHostName[MAX_PATH];
    int x;

    WSAStartup(MAKEWORD(1, 1), &wsaData);
    if(SOCKET_ERROR != gethostname(szHostName, NUM_ELEMENTS(szHostName)))
    {
    if(NULL != (h = gethostbyname(szHostName)))
    {
    for(x = 0; (h->h_addr_list[x]); x++)
    {

    ucAddress[0] = h->h_addr_list[x][0];
    ucAddress[1] = h->h_addr_list[x][1];
    ucAddress[2] = h->h_addr_list[x][2];
    ucAddress[3] = h->h_addr_list[x][3];

    wsprintf(IP_ADDRESSE, "%d.%d.%d.%d", ucAddress[0], ucAddress[1], ucAddress[2], ucAddress[3]);
    }
    }
    }
    WSACleanup();

    return TRUE;
    }


  • Mod

    Benutze bitte die cpp-Tags (Links unter den Smileys) für Programmcode.

    Deine Fehlermeldung ist unvollständig. Der Linker sagt dir bestimmt auch, was der Fehler ist.

    Da ich daher nur raten kann: Hast du vielleicht vergessen gegen eine benötigte Bibliothek zu linken oder wird diese möglicherweise nicht gefunden?



  • gute idee. denke ich auch, irgendeine bibliothek.....aber welche 😃

    die fehlermeldung hatte ich vergessen, sorry:

    [Linker error] undefined reference to WSAStartup@8' [Linker error] undefined reference togethostname@8'
    [Linker error] undefined reference to gethostbyname@4' [Linker error] undefined reference toWSACleanup@0'
    ld returned 1 exit status


  • Administrator

    In der MSDN steht zu all diesen Funktionen, dass du noch Ws2_32.lib dazulinken musst. Wahrscheinlich hast du dies vergessen oder nicht richtig gelesen.

    Grüssli



  • Es fehlt wahrscheinlich die hier:
    http://msdn.microsoft.com/en-us/library/ms742213(VS.85).aspx

    Edit: Zu langsam 🙂

    Gruß Kimmi



  • danke erstmal,

    sorry, aber wie linke ich das dazu 😕
    muss ich im installationspfad was ändern? 🤡



  • Entweder über die Projekteingenschafte oder direkt im Code (was ich bevorzuge, da man dann sofort sieht welche lib eingebunden ist.

    Im Code geht das so:

    #pragma comment (lib, "Ws2_32.lib")
    

    #edit: hab die "" vergessen bei der lib



  • danke.

    ich habe das oben bei den includes eingefügt...aber das selbe ist passiert 🤡


  • Administrator

    Welcher Kompiler?

    Grüssli



  • Welchen Compiler verwendest du?
    Hab grad nochmal nachgeschlagen, und diese lib hat teilweise unterschiedliche Namen.

    WSOCK32.LIB, WS2_32.LIB, WINSOCK32.LIB oder WINSOCK2_32.LIB.

    Musst herausfinden welche bei deinem Compiler verwendet wird.


Anmelden zum Antworten