Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - InternetOpen
Forum - C/C++ - InternetOpen

Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 19:06
Venerdì, 25/07/2008
Devo connettermi ad un server ftp con il programma per ottenere un file.

Ho creato allora la funzione:

Codice sorgente - presumibilmente C#

  1. void CreateConnection()
  2. {
  3.         HINTERNET hInternetConn;
  4.         HINTERNET hInternetOpen;
  5.         char szAppName[] = "Prog update";
  6.         char serverName[] = "localhost";
  7.  
  8.         hInternetOpen = InternetOpen( szAppName , INTERNET_OPEN_TYPE_DIRECT , NULL , NULL , INTERNET_FLAG_ASYNC );
  9.  
  10.         hInternetConn = InternetConnect( hInternetOpen , serverName , INTERNET_DEFAULT_FTP_PORT , NULL , NULL , INTERNET_SERVICE_FTP ,
  11.                 INTERNET_FLAG_PASSIVE , 0 );
  12.  
  13. }



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
:d

Tra parentesi, uso vc++ 6.0

Ultima modifica effettuata da lorenzo il 25/07/2008 alle 19:07
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 19:16
Venerdì, 25/07/2008
Hai aggiunto il riferimento al relativo file .lib?


Il mio blog: https://piero.dev
PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 19:22
Venerdì, 25/07/2008
Testo quotato

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..)

PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 19:30
Venerdì, 25/07/2008
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")

PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 19:35
Venerdì, 25/07/2008
So che i .h sono solo file di intestazione.
La mia domanda era: dove trovo il file wininet.lib?

Nella cartella di vc?

PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 19:47
Venerdì, 25/07/2008
Testo quotato

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 ...

Testo quotato

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?

PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 19:52
Venerdì, 25/07/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

PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 20:13
Venerdì, 25/07/2008
Adesso però ho un nuovo problema:rotfl:

La InternetConnect mi restituisce sempre NULL

Ho provato anche a modificarla in questo modo ma niente:

Codice sorgente - presumibilmente Plain Text

  1. hInternetConn = InternetConnect( hInternetOpen , serverName , INTERNET_DEFAULT_FTP_PORT , user , passwd ,
  2.                 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...

PM Quote
Avatar
gantonio (Normal User)
Guru^2


Messaggi: 1532
Iscritto: 09/09/2007

Segnala al moderatore
Postato alle 20:30
Venerdì, 25/07/2008
Testo quotato

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 ...

Testo quotato

E' la prima volta che mi capita...



Strano ... si vede che non hai utilizzato mai qualche API particolare ...

Testo quotato

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).

PM Quote