| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
Diskussion: C++ Winsock Fehler im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Hallo ich hab folgendes Problem, ich hab folgenden c++ Code wenn ich in aber kompiliere bekomm ich massig fehlermeldungen. ...
![]() |
| | #1 (permalink) |
| Registriert seit: 25.04.11 ![]() Likes: 0 | C++ Winsock Fehler Anzeige Hallo ich hab folgendes Problem, ich hab folgenden c++ Code wenn ich in aber kompiliere bekomm ich massig fehlermeldungen. Ich habe es mit Bloodshed c++, codeblocks und borland c++ 5 Compilern probiert. Wenn jemand mal den Code durgucken könnte und mir den Fehler erklären könnte wäre spitze! MeinCode: Code: #include <windows.h>
#include <winsock2.h>
#include <stdio.h>
//Prototypen
int startWinsock(void);
int main()
{
long rc;
SOCKET acceptSocket;
SOCKADDR_IN addr;
// Winsock starten
rc=startWinsock();
if(rc!=0)
{
printf("Fehler: startWinsock, fehler code: %d\n",rc);
return 1;
}
else
{
printf("Winsock gestartet!\n");
}
// Socket erstellen
acceptSocket=socket(AF_INET,SOCK_STREAM,0);
if(acceptSocket==INVALID_SOCKET)
{
printf("Fehler: Socket konnte nicht erstellt werden, fehler code: %d\n",WSAGetLastError());
return 1;
}
else
{
printf("Socket erstellt!\n");
}
return 0;
}
int startWinsock(void)
{
WSADATA wsa;
return WSAStartup(MAKEWORD(2,0),&wsa);
} Code:
C:\Users\Skip\Desktop\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `send@16'| C:\Users\Skip\Desktop
\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `WSAGetLastError@0'| C:\Users\Skip\Desktop
\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `WSAStartup@8'| C:\Users\Skip\Desktop
\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `socket@12'| C:\Users\Skip\Desktop\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `WSAGetLastError@0'| C:\Users\Skip\Desktop
\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `htons@4'| C:\Users\Skip\Desktop\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `bind@12'| C:\Users\Skip\Desktop
\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `WSAGetLastError@0'| C:\Users\Skip\Desktop
\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `listen@8'| C:\Users\Skip\Desktop\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `WSAGetLastError@0'| C:\Users\Skip\Desktop
\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `select@20'| C:\Users\Skip\Desktop\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `closesocket@4'| C:\Users\Skip\Desktop
\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `WSACleanup@0'| C:\Users\Skip\Desktop
\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `accept@12'| C:\Users\Skip\Desktop\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `inet_ntoa@4'| C:\Users\Skip\Desktop
\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `recv@16'| C:\Users\Skip\Desktop\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `inet_ntoa@4'| C:\Users\Skip\Desktop
\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `closesocket@4'| C:\Users\Skip\Desktop
\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `WSAGetLastError@0'| C:\Users\Skip\Desktop
\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `inet_ntoa@4'| C:\Users\Skip\Desktop\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `inet_ntoa@4'| C:\Users\Skip\Desktop
\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `closesocket@4'| C:\Users\Skip\Desktop
\selectchatsrv.o:selectchatsrv.cpp|| undefined reference to `inet_ntoa@4'| ||=== Build finished: 23 errors, 0 warnings ===| printf("Fehler: startWinsock, fehler code: %d\n",rc); ![]() MFG Geändert von Skipp3r (26.04.11 um 00:03 Uhr) |
| | |
| | #2 (permalink) |
| Registriert seit: 06.06.09 ![]() Likes: 6 | Das sind Linkerfehler. Du musst gegen die Ws2_32.lib linken.
__________________ A good programmer looks both ways before crossing a one-way street. Die Politik kann uns nur für so dumm verkaufen, wie wir sind. |
| | |
| | #4 (permalink) |
| Registriert seit: 06.06.09 ![]() Likes: 6 | In deinem Fall müsstest du wohl mit dem Parameter -lwsock32 compilieren. Ich empfehle dir aber dich etwas näher mit der Materie zu beschäftigen und auch erst mal selbst nach der Lösung für ein Problem zu suchen. Durch einfaches Copy&Paste kommst du sonst nie ans Ziel. Es reicht auch, wenn du deine Frage hier stellst, du musst mir nicht eine Kopie deines Posts per PN schicken
__________________ A good programmer looks both ways before crossing a one-way street. Die Politik kann uns nur für so dumm verkaufen, wie wir sind. |
| | |
| | #5 (permalink) | |
| Themenstarter Registriert seit: 25.04.11 ![]() Likes: 0 | Zitat:
Winsock Tutorial: Grundlagen und TCP Da habich den code her und ich fang halt noch an | |
| | |
| | #6 (permalink) | |
| Hättest du die Seite komplett gelesen, hättest du oben die Zeilen Zitat:
| ||
| | |
| | #7 (permalink) |
| Themenstarter Registriert seit: 25.04.11 ![]() Likes: 0 | Ich habe das Tutorial gelesen aber ich hab nich verstanden wie man beim Bloodshed C++ gegen das Programm linkt ?!? Kann mir das einer bitter erklären? |
| | |
| | #8 (permalink) |
| Registriert seit: 06.06.09 ![]() Likes: 6 | An welcher Stelle kommst du denn nicht weiter?
__________________ A good programmer looks both ways before crossing a one-way street. Die Politik kann uns nur für so dumm verkaufen, wie wir sind. |
| | |
| | #9 (permalink) |
| Themenstarter Registriert seit: 25.04.11 ![]() Likes: 0 | Also ich hab mir ca vor 1,5 jahren mehrere Bücher über C++ lernen gekauft. Weils mich intressiert hat und es mir spaß gemacht hat, hab ich mir mühe gegeben das alles zu lernen. Nur wird in solchen Büchern immer mit consolen iostream programmen angefangen was mir dann nach nem halben jahr zu langweilig wurde. Ich habs dann lange liegen gelassen und mich neulich zum ersten mal wieder mit der Materie beschäftigt. Ich bin dann auf die Idee gekommen etwas weiter zu greifen und mit Winsockets zu arbeiten (Wollte mit einfachen chat programm anfangen und bin dann auf das gestoßen) Ganze Geschichte hat die Pointe dass ich nicht wirklich erfahren bin aber durchaus gewillt bin mich damit zu befassen. Mein Problem ist das ich das mit gegeneinander linken nich raffe ?!?! Bei Hello World Programmen hat alles wunderbar funktioniert und auch bei Rechnern und Input output programmen musste ich nichts einstellen also es ging einfach mit neuem projekt usw. Wie soll ich mit dem parameter Compilieren ??? Danke für die Hilfe ! MFG Skipper |
| | |
| | #10 (permalink) |
| Registriert seit: 06.06.09 ![]() Likes: 6 | Ich kann das gut verstehen, mir ging es früher ähnlich. Aber das Problem ist, wenn man sich übernimmt, wird man oft in Probleme rennen. Und wenn die dann zu hoch für einen sind, sodass man da steht wie der Ochs vorm Berg und nicht einmal weißt, wie man Hinweise für die Lösung finden kann, sollte man sich überlegen, ob man sich nicht zu viel zugemutet hat. Aber wie dem auch sei. Wenn du nach deiner Fehlermeldung gesucht hättest, hättest du selbst herausgefunden, dass du gegen die Library linken musst. ![]() Hast du mal in den Projekteinstellungen gesucht, ob da irgendwo die Rede von einem Linker ist? Oder man Kompilerparameter einstellen kann? Hört sich nicht danach an... Also ich kenne deine IDE selbst nicht, aber nach etwas googeln...Es sollte in den Projekteinstellungen einen Reiter "Parameters" geben. Dort soll man dann Kompiler- und Linkeroptionen setzen können. Schau doch mal nach, ob das wirklich zutrifft.
__________________ A good programmer looks both ways before crossing a one-way street. Die Politik kann uns nur für so dumm verkaufen, wie wir sind. |
| | |
| | #11 (permalink) |
| Themenstarter Registriert seit: 25.04.11 ![]() Likes: 0 | Welchen IDE benutzt du ?? vlt kann ich mir den dann von meinem dad hohlen. btw. Mit welchem shortcut maximiere ich ein Fenster (Spiel,Programm ..) und bringe es in den Fenstermodus ? SO ich habe es jetz. Aber es ist ja eine Konsolen ausgabe deswegen schließt es sofort wieder, kann ich mit getch(); das fenster offen halten weil getch is ja nicht ansi-konform. Stört das überhaupt? Und ich muss getch ja vor ende der main funktion einfügen also vor return oder? Geändert von Skipp3r (25.04.11 um 23:56 Uhr) |
| | |
| | #12 (permalink) |
| Registriert seit: 06.06.09 ![]() Likes: 6 | Ich verwende Visual Studio 2010. Davon gibt es eine kostenlose Variante Visual Studio Express. Ist allerdings nicht Open Source.
__________________ A good programmer looks both ways before crossing a one-way street. Die Politik kann uns nur für so dumm verkaufen, wie wir sind. |
| | |
| | #13 (permalink) | |
| Themenstarter Registriert seit: 25.04.11 ![]() Likes: 0 | Zitat:
Ich hab jetz wieder das problem das sich die KOnsole sofort schließt obwohl ich getchar(); und conio.h eingebunden habe Geändert von Skipp3r (26.04.11 um 00:16 Uhr) | |
| | |
| | #14 (permalink) |
| Senior Member Registriert seit: 13.07.08 ![]() ![]() ![]() Likes: 85 | -lwsock32 weist den Linker an, die libwsock32.dll.a in den Bindungsprozess mit einzubeziehen. In dieser Datei werden die Verknüfpungen der Funktionen (WSAStartup, socket, ...) mit der DLL festgehalten. Dadurch kann Windows dann beim Ausführen des Programms die Einsprungpunkte der Funktionen aus der DLL auslesen, und sie so bei einem Aufruf ausführen.
__________________ "It is the human race! The deterioration of the spirit of man. Man undermining himself, causing a self-willed, self-imposed, self-evident self-destruction."+++ BREAKING +++ Troll ertrinkt im Planschbecken +++ |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |