Newsgroup: it.comp.programmare.win32
Titolo: Errore di linking con la libreria wininet.h

Salve,
il seguente codice mi da un errore di linking:
#include <wininet.h>
int main() {
    HINTERNET connessione, sessione_ftp;
    connessione = InternetOpen(NULL, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 
0);
    if (connessione) {
       sessione_ftp = InternetConnect(connessione, "
ftp.geocities.com
", 
INTERNET_DEFAULT_FTP_PORT, "Prova", "12345", INTERNET_SERVICE_FTP, 0, 0);
       if (sessione_ftp)
          FtpPutFile(sessione_ftp, "file1.txt", "file2.txt", 
INTERNET_FLAG_TRANSFER_BINARY, 0);
    };
    InternetCloseHandle(connessione);
    InternetCloseHandle(sessione_ftp);
    return 0;
};
Il compilatore č g++ (uso Dev-C++)
In function `main':
7 :undefined reference to `InternetOpenA@20'
9: undefined reference to `InternetConnectA@32'
11: undefined reference to `FtpPutFileA@20'
15: undefined reference to `InternetCloseHandle@4'
16: undefined reference to `InternetCloseHandle@4'
collect2: ld returned 1 exit status
A cosa č dovuto?
Mi pare sia sufficiente includere quell'header...
Grazie 

 Mi pare sia sufficiente includere quell'header...
Con il visual studio č necessario includere anche le rispettive "import
libraries", che sono dei file nei quali sono riportati tutti i simboli
esportati dalle DLL a cui fanno riferimento (nel tuo caso wininet.dll). Nel
caso delle funzioni piů comuni (kernel, gdi, user) di solito l'inclusione
viene fatta implicitamente, č per questo motivo che in quel caso non si
deve specificare nulla.
Non conosco il dev-C++, ma googlando cosě probabilmente puoi trovare buoni
spunti:
http://www.google.it/search?q=Dev-C%2B%2B+%22import+libraries%22
-- 
emboliaschizoide.splinder.com

 
http://www.google.it/search?q=Dev-C%2B%2B+%22import+libraries%22
Ho linkato la libreria libwininet.a (a riga di comando, meglio i vecchi 
metodi :) e compila correttamente.
Perņ noto che il file non viene inviato al server... i parametri sono 
corretti, sbaglio qualcosa io? 

 corretti, sbaglio qualcosa io?
Su altervista funziona... sarà qualcosa legato a geocities. 

 metodi :) e compila correttamente.
Come ho scritto qualche giorno fa, compilando con la seguente istruzioni 
dalla prompt di DOS:
g++ miofile.cpp libwininet.a -o miofile.exe
riuscivo ad ottenere un file funzionante di 505 KB, solo che su windows 
vista non funzionava come doveva.
Allora smanettando un po', ho inserito il nome della libreria tra i comandi 
da passare al compilatore (Strumenti -> Opzioni di compilazione)
Compilo il file (da Dev stavolta e non dalla prompt) e ottengo un file di 
1,3 MB che su vista funziona correttamente. E già mi chiedo cosa sia 
cambiato tra una compilazione e l'altra.
Oggi, riprovo a compilare come l'altro giorno, al fine di ottenere un file 
da 1,3 MB, ma ottengo sempre quello da 505 KB, come se la compilazione 
l'avessi fatta a riga di comando dalla prompt.
Qualcuno sa dirmi se forse ho dimenticato ad attivare qualche opzione, forse 
devo fare in modo che il compilatore aggiunga qualche altra cosa all'exe 
perché questo funzionamento mi sembra molto anomalo.
Grazie 

Anche su C++ Builder il codice mi da un errore di linking, ovvero:
undefined reference to `InternetOpenA@20'
undefined reference to `InternetConnectA@32'
undefined reference to `FtpPutFileA@20'
undefined reference to `InternetCloseHandle@4'
undefined reference to `InternetCloseHandle@4'
In che modo effettuo il linking con la libreria libwininet.a?
Grazie 

> In che modo effettuo il linking con la libreria libwininet.a?
Devi linkare la wininet.lib. Per il link statico è sufficiente 
aggiungerla ai file del progetto.
HTH,
-- 
Stefano Frosio
www.esse-effe.com

 ai file del progetto.
Ma in quale cartella si trova? Col trova file non riesco a vederla. 

 vederla.
Si trova in $(BCB)\lib.
-- 
Stefano Frosio
www.esse-effe.com

 Si trova in $(BCB)\lib.
$(BCB) è la cartella di installazione? Intendi quindi 
C:\Programmi\Borland\CBuilder3\Lib?
Perché li non c'è.
Inoltre se vado in Environment Option c'è già questa path: 
$(BCB)\LIB;$(BCB)\LIB\OBJ
Ma non linka niente... 

 Ma non linka niente...
Devi comunque aggiungere la libreria tra i file.
-- 
Stefano Frosio
www.esse-effe.com

 recente.
Ho installato la versione 6 ed ho lo stesso problema...
Penso che lascerò perdere tutto.
Ciao 

> Ho installato la versione 6 ed ho lo stesso problema...
Mi pare molto strano allora che tu non abbia la wininet.lib. E 
se anche fosse, ripeto, la puoi ottenere dalla DLL presente nel 
sistema operativo.
-- 
Stefano Frosio
www.esse-effe.com

 fosse, ripeto, la puoi ottenere dalla DLL presente nel sistema operativo.
Cercando meglio nella versione 6 c'era, l'ho copiata anche nella 3 che a 
quanto pare ne era sprovvista (non esce nemmeno col trova file...)