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;
}
-
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 togethostbyname@4' [Linker error] undefined reference toWSACleanup@0'
ld returned 1 exit status
-
In der MSDN steht zu all diesen Funktionen, dass du noch
Ws2_32.libdazulinken 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).aspxEdit: 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

-
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.