socketprogrammierung unter Windows, anfängerfrage
-
Hallo Leute,
bin gerade dabei mich über Scoketprogrammierung zu informieren. Hab dann auch gleich ein Tutorial gelesen und folgenden Code zusammengeschrieben:
#include <windows.h> //ist klar #include <winsock2.h> //der socket-header #include <iostream> //ausgabe/eingabe using namespace std; int startWinsock() //damit wir winsock strten koennen { WSADATA wsa; //wird mit winsock-versions-daten gefuellt return WSAStartup( MAKEWORD(2,0),&wsa); //winsocket wird eingeschaltet } //return 0, wenn kein fehler int main(int argc, char *argv[]) { long rc; rc=startWinsock(); if(rc!=0){ cout << "Fehler: startWinsock, fehler code:" << rc << endl; return 1; } else{ printf("Winsock gestartet!\n"); } return 0; }
Nun versuche ich das ganze mit MinGw zu kompilieren und erhalte folgenden Fehler:
g++ sock.cpp -o sock.exe C:\DOKUME~1\tobias\LOKALE~1\Temp/ccKEaaaa.o(.text+0x11b):sock.cpp: undefined ref erence to `WSAStartup@8' collect2: ld returned 1 exit status
Bin für jeden Tipp dankbar.
-
du musst noch ne library includen.
weiß jetzt nicht welche das bei dir ist, aber unter dev c++ wäre es dirlibwsock32.a
dann klappts auch mit dem compilen
mfg
spearmint
-
Ich arbeite zur zeit ohne IDE, also nur per editor und commandline.
Daran sollte es also nicht scheiern.Bist du dir sicher, das die Datei auf *.a endet? Ist nämlich das erste mal, dass ich einen solche Dateityp sehe.
Könnte es auch libwsock32.h heissen?
Hab beide Varianten versucht, doch nichts hat bisher geholfen. Er findet die Dateien nicht einmal. (egal, ob *.a , *.h, *.dll, ...).
-
Die Bibliothek selbst heißt ws2_32.dll, das statische Importarchiv dazu (statische Archive haben beim gcc die Endung .a) heißt libws2_32.a - und die muss auf der Kommandozeile vom gcc mit -lws2_32 angegeben werden.
-
Super, danke. Funzt alles. Tschüss!
-
Könnt ihr mir pls noch sagen, wie ich das bei CodeBlocks einstelle?
Hab mir diese IDE heute heruntergeladen.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
5000_Watt schrieb:
Könnt ihr mir pls noch sagen, wie ich das bei CodeBlocks einstelle?
Hab mir diese IDE heute heruntergeladen.
Project -> Build Options -> Linker Settings -> Add
Und dann "ws2_32" eintragen.
-
ProgChild schrieb:
5000_Watt schrieb:
Könnt ihr mir pls noch sagen, wie ich das bei CodeBlocks einstelle?
Hab mir diese IDE heute heruntergeladen.
Project -> Build Options -> Linker Settings -> Add
Und dann "ws2_32" eintragen.
Hallo,
ich habe auch die ide und habe auch die Datei ws2_32 bei Settings -> Compiler and Debugger -> Linker Options eingetragen, es geht aber trotzdem nicht. Was kann ich tun?
Auf einem anderen Rechner geht es...
-
ok, hat sich geklärt, die lib war auf dem rechner nicht vorhanden, musste sie runterladen.