lorenzo (Normal User)
Guru
Messaggi: 1178
Iscritto: 15/04/2008
|
Devo connettermi ad un server ftp con il programma per ottenere un file.
Ho creato allora la funzione:
Codice sorgente - presumibilmente C# |
void CreateConnection() { HINTERNET hInternetConn; HINTERNET hInternetOpen; char szAppName[] = "Prog update"; char serverName[] = "localhost"; hInternetOpen = InternetOpen( szAppName , INTERNET_OPEN_TYPE_DIRECT , NULL , NULL , INTERNET_FLAG_ASYNC ); hInternetConn = InternetConnect( hInternetOpen , serverName , INTERNET_DEFAULT_FTP_PORT , NULL , NULL , INTERNET_SERVICE_FTP , INTERNET_FLAG_PASSIVE , 0 ); }
|
e ho incluso #include<wininet.h>
Quando compilo tutto bene ma quando faccio il build mi vengono due errori:
--------------------------------------------
ftp_update.obj : error LNK2001: unresolved external symbol __imp__InternetConnectA@32
ftp_update.obj : error LNK2001: unresolved external symbol __imp__InternetOpenA@20
--------------------------------------------
Come mai? Il file wininet il compilatore me lo vede, quindi perché non trova le funzioni??
Aiuto
Tra parentesi, uso vc++ 6.0
Ultima modifica effettuata da lorenzo il 25/07/2008 alle 19:07 |
|
pierotofy (Admin)
Guru^2
Messaggi: 6230
Iscritto: 04/12/2003
|
Hai aggiunto il riferimento al relativo file .lib?
|
|
lorenzo (Normal User)
Guru
Messaggi: 1178
Iscritto: 15/04/2008
|
Postato originariamente da pierotofy:
Hai aggiunto il riferimento al relativo file .lib? |
e dove lo trovo? Pensavo fosse una libreria integrata in vc come le altre( windows.h, stdio.h,etc..) |
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
I file .h NON sono librerie ma semplici file include.
Se vuoi utilizzare le funzioni di una libreria esterna, devi indicarlo al linker. Per il Visual C++ 6 puoi anche metterlo nel sorgente all'inizio con
#pragma comment(lib, "wininet.lib")
|
|
lorenzo (Normal User)
Guru
Messaggi: 1178
Iscritto: 15/04/2008
|
So che i .h sono solo file di intestazione.
La mia domanda era: dove trovo il file wininet.lib?
Nella cartella di vc?
|
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
Postato originariamente da lorenzo:
So che i .h sono solo file di intestazione. |
Scusa ... ma avevi scritto
"Pensavo fosse una libreria ... come le altre( windows.h ..."
ecco perche' ho fatto la precisazione ...
La mia domanda era: dove trovo il file wininet.lib?
Nella cartella di vc? |
Sta nella cartella lib ... ma non importa ... con la pragma, viene trovata e inclusa ... l'hai provato? |
|
lorenzo (Normal User)
Guru
Messaggi: 1178
Iscritto: 15/04/2008
|
Ok, adesso funziona. Grazie.
Ma perché non è stata trovata come tutte le altre? E' la prima volta che mi capita...dopotutto è una libreria nativa
|
|
lorenzo (Normal User)
Guru
Messaggi: 1178
Iscritto: 15/04/2008
|
Adesso però ho un nuovo problema
La InternetConnect mi restituisce sempre NULL
Ho provato anche a modificarla in questo modo ma niente:
Codice sorgente - presumibilmente Plain Text |
hInternetConn = InternetConnect( hInternetOpen , serverName , INTERNET_DEFAULT_FTP_PORT , user , passwd ,
INTERNET_SERVICE_FTP , 0 , 0 );
|
dove serverName = "127.0.0.1" e user e passwd sono l'utente e la password che ho messo in filezilla...
|
|
gantonio (Normal User)
Guru^2
Messaggi: 1532
Iscritto: 09/09/2007
|
Postato originariamente da lorenzo:
Ma perché non è stata trovata come tutte le altre? |
Quali altre? Vengono linkate queste
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib
perche' sono automaticamente incluse nelle proprieta' del progetto ...
E' la prima volta che mi capita... |
Strano ... si vede che non hai utilizzato mai qualche API particolare ...
dopotutto è una libreria nativa |
Che intendi con nativa? E' parte di Windows ma non tutte le librerie di Windows sono linkate automaticamente (come ti ho detto sopra). |
|