PDA

View Full Version : error: 'inet_addr' was not declared in this scope


Janky
14-03-2007, 19:53
ciao, uso mac os x assieme all'ide Xcode

sto facendo uno dei miei primi programmini di rete, ma ho problemi con la
addr_initialize

in particolare, non mi funziona inet_addr, dicendomi che non l'ho dichiarata... :confused:

il codice che uso è questo:
void addr_initialize(struct sockaddr_in* indirizzo, int port, long IPaddr){
indirizzo->sin_family = AF_INET;
indirizzo->sin_port = htons((u_short) port);
indirizzo->sin_addr.s_addr = IPaddr;
}

e quando richiamo la addr_initialize lo faccio con

addr_initialize(&server_addr,PORT,inet_addr(argv[1]));
e mi da appunto errore su questa riga, riferendosi alla inet_addr

non riesco a capire dove sbaglio... il programma l'ho copiato esattamente dal proiettore in classe.

il mio prof usa esattamente come me un macbook pro... quindi non è un problema di so...

al massimo chiederò a lui

user7077
31-12-2010, 14:25
Hai controllato di avere tutto a posto (librerie ecc..), perchè dovresti linkare nel programma la "ws2_32.lib". Se tu vuoi usare una funzione della "WinSock2.h" devi aver incluso la libreria che definisce i metodi di quel file header, ovvero:

Nel file "WinSock2.h" trovi per esempio la dichiarazione del metodo inet_addr, ma quella poi dovrà essere definita in una libreria (o DLL), in questo caso la "ws2_32.lib", capito?

P.S: Per linkare una libreria si usa questa linea di codice:

#pragma comment(lib, "ws2_32.lib")

maulattu
31-12-2010, 15:42
Hai controllato di avere tutto a posto (librerie ecc..), perchè dovresti linkare nel programma la "ws2_32.lib". Se tu vuoi usare una funzione della "WinSock2.h" devi aver incluso la libreria che definisce i metodi di quel file header, ovvero:

Nel file "WinSock2.h" trovi per esempio la dichiarazione del metodo inet_addr, ma quella poi dovrà essere definita in una libreria (o DLL), in questo caso la "ws2_32.lib", capito?

P.S: Per linkare una libreria si usa questa linea di codice:

#pragma comment(lib, "ws2_32.lib")

usa mac osx con xcode, non windows ;)

maulattu
31-12-2010, 15:43
ciao, uso mac os x assieme all'ide Xcode

sto facendo uno dei miei primi programmini di rete, ma ho problemi con la
addr_initialize

in particolare, non mi funziona inet_addr, dicendomi che non l'ho dichiarata... :confused:

il codice che uso è questo:
void addr_initialize(struct sockaddr_in* indirizzo, int port, long IPaddr){
indirizzo->sin_family = AF_INET;
indirizzo->sin_port = htons((u_short) port);
indirizzo->sin_addr.s_addr = IPaddr;
}

e quando richiamo la addr_initialize lo faccio con

addr_initialize(&server_addr,PORT,inet_addr(argv[1]));
e mi da appunto errore su questa riga, riferendosi alla inet_addr

non riesco a capire dove sbaglio... il programma l'ho copiato esattamente dal proiettore in classe.

il mio prof usa esattamente come me un macbook pro... quindi non è un problema di so...

al massimo chiederò a lui

hai fatto questa include?
#include <arpa/inet.h>
apri il terminale e fai un bel
man inet_addr
e trovi tutto quello che ti serve ;)