PDA

Visualizza la versione completa : [C++] Creazione di un socket


dades
12-08-2009, 12:17
Fino ad ora ho sempre creato socket con linguaggi ad alto livello senza problemi.
Ora volevo provare con c++.
Riscontro dei problemi fin dalla prima riga:


#include <winsock.h>

int main(){
SOCKET sock = socket(AF_INET, SOCK_STREAM, 0);
return 0;
}

Mi restituisce, in fase di compilazione, l'errore:
[Linker error] undefined reference to `socket@12'
ld returned 1 exit status

Come risolvo il problema??

PS: magari non Ŕ importante, ma come editor di sviluppo uso dev-c++.

Stoicenko
12-08-2009, 12:19
devi indicare al linker dove sta la libreria winsock (il .lib insomma)

dades
12-08-2009, 14:10
Come faccio a linkare???

mondobimbi
12-08-2009, 14:26
tutti gli ambienti di sviluppo hanno la possibilitÓ di indicare le opzioni del linker.
Cerca nel menu del tuo ide alle voci proprietÓ o proprietÓ del progetto e qualcosa di simile. Se sei invece in grado di dare le istruzioni direttamente al linker l'opzione che devi usare Ŕ -l
ciao
sergio

dades
12-08-2009, 14:38
Grazie ora funziona!!!
Ma scusa la domanda, dato che le librerie sono state giÓ installate nel setup del programma dev-c++ perchŔ devo linkare io le librerie?? Non si poteva linkarle tutte automaticamente?? Forse c'Ŕ la possibilitÓ di importare librerie esterne???

Stoicenko
12-08-2009, 15:06
non solo si possono linkare librerie esterne ma in pi¨, il linker, ingloba nell'eseguibile (o libreria) che tu fai tutte le librerie linkate.. se le inglobasse tutte avremo eseguibili enormi per un hello world

mondobimbi
12-08-2009, 15:08
alcune sono linkate automaticamente, altre solo esplicitamente, perchŔ si presume che non tutti le usini.
ciao
sergio

dades
12-08-2009, 18:16
Qualcuno pu˛ spiegarmi come si crea una socket in c++??
Vorrei che qualcuno facesse un semplice esempio di un server che invia una stringa e un client che la riceve.
L'esempio deve presuppore che si lavori solo con file cpp e non h. Inoltre se si potesse fare riferimento alla libreria winsock.h.
Premetto che ho giÓ cercato su google ma non riesco a capire come si fa e molti fanno esempi con file h e questo m complica la cosa.

Loading