PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : wsock32.lib linken!



der_anfänger
10-06-2006, 15:46
Code:
#include <iostream>
#include <winsock.h>

int getdns(int, char **)
{
char ac[80];
if (gethostname(ac, sizeof(ac)) == SOCKET_ERROR) {
std::cerr << "Error " << WSAGetLastError() <<
" when getting local host name." << std::endl;
return 1;
}
std::cout << "Host name is " << ac << "." << std::endl;

struct hostent *phe = gethostbyname(ac);
if (phe == 0) {
std::cerr << "Yow! Bad host lookup." << std::endl;
return 1;
}

for (int i = 0; phe->h_addr_list[i] != 0; ++i) {
struct in_addr addr;
memcpy(&addr, phe->h_addr_list[i], sizeof(struct in_addr));
std::cout << "Address " << i << ": " << inet_ntoa(addr) << std::endl;
}

return 0;
}

int main(int argc, char *argv[])
{
WSAData wsaData;
if (WSAStartup(MAKEWORD(1, 1), &wsaData) != 0) {
return 255;
}

int retval = getdns(argc, argv);

WSACleanup();

return retval;
}
Natürlich musst du gegen die wsock32.lib linken!




Könnt ihr mir erklären was der jenige mit linken meint.

gruss

coder

Boron
10-06-2006, 17:24
Du musst dem "Linker" sagen, dass er beim Linken die wsock32.lib berücksichtigen soll.

Das heißt, wenn der Compiler fertig ist werden alle vom Compiler erstellten Objektdateien (heißen meist *.o) zu einer ausführbaren Datei zusammengefügt (engl. to link).
Wenn du jetzt Funktionen aus der Bibliothek wsock32.lib nutzt und der Linker das nicht weiß, dann wird er dir melden, dass du Funktionen nutzt mit denen er nichts anfangen kannst, weil er sie nicht findet.

Du hast jetzt leider nicht geschrieben welche Entwicklungsumgebung du benutzt, vor allem aber welchen Compiler und Linker. Ich tippe aber mal auf MS Visual Studio.
Dort gibt es in dem Projekteinstellungen irgendwo die Einstellungen zum Linker, und dort solltest du einen Liste von Bibliotheken finden, die der Linker beim Linken berücksichtigt. Wenn die wsock32.lib fehlt, dann ergänzen.

der_anfänger
10-06-2006, 17:55
Ich habe dev c++ kanst mir da helfen bitte.

gruss

Coder

Boron
10-06-2006, 19:12
Hast Glück, dass ich mir das vor einer Woche installiert habe :).

Menü Project -> Project Options -> Karteireiter Parameters -> Rechte der drei Spalten -> Button "Add Library or Object".
Dort klickst du dich bis zu zu der Datei durch.

Falls du die Lib nicht hast weiß ich leider auch nicht woher du die bekommst.
Ich habe sie z.B. auch nicht auf meinem Rechner.
Vermutlich brauchst du da irgend so komisches Zeug von Microsoft.

der_anfänger
10-06-2006, 21:01
Vielen Dank

Ich werde jetzt die libary suchen.Noch was anderes ich kann net so weiter machen immoment poste ich im forum und such mir code schnipzel zusammen aber das kann es net sein.
Ich brauche ein echtes tutorial ich kenn ein paar aber die sind so trocken könnt ihr mir noch ein richtig gutes emfelen.Bei mir ist das Sprichwort genau anders rum ohne preis kein fleiss"Wenn ich keine erfolge verspür verliere ich die lust2.

Ich hoffe ich werde genug antworten zusamm finden ist mir echt wichtig.


Mfg

CODER

Joghurt
11-06-2006, 00:19
Statt Dev-Cpp würde ich übrigens www.codeblocks.org nehmen. (die development snapshots, nicht den rc2)

der_anfänger
11-06-2006, 01:43
Danke aber ich bleibe bei dec cpp kennste.

Kenst noch ein gutes tutorail.

Gruss


coder