2013-09-23 20 views
6

curently ho installato sul mio sistema qt-windows-opensource-5.1.1-msvc2012-x86_64-offlineCome utilizzare libcurl su Qt Creator con MSVC2012 come compilatore

Tutto funziona bene, ma non posso davvero succed usare libCurl sul mio progetto Qt.

ho scaricato questa versione di libcurl: http://curl.haxx.se/download/libcurl-7.19.3-win32-ssl-msvc.zip

MSVC metalink 7.19.3 devel SSL   Frederic Elbin 4.04 MB 

Ho spostato includono cartella dall'archivio a VC comprendono cartella e ho incluso nel programma con #include e funziona bene.

Ora nella cartella lib ci sono altre due cartelle con i nomi: Debug e Release e entrambi hanno all'interno alcuni file.

Il mio file .pro ho aggiunto:

win32: LIBS += -L$$PWD/../../../../../libcurl-7.19.3-win32-ssl-msvc/ -llibcurl_imp 

INCLUDEPATH += $$PWD/../../../../../libcurl-7.19.3-win32-ssl-msvc 
DEPENDPATH += $$PWD/../../../../../libcurl-7.19.3-win32-ssl-msvc 

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../../../libcurl-7.19.3-win32-ssl-msvc/lib/release/ -lcurllib 
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../../../libcurl-7.19.3-win32-ssl-msvc/lib/debug/ -lcurllib 

INCLUDEPATH += $$PWD/../../../../../libcurl-7.19.3-win32-ssl-msvc/lib/Debug 
DEPENDPATH += $$PWD/../../../../../libcurl-7.19.3-win32-ssl-msvc/lib/Debug 

E ora, quando si tenta di eseguire un semplice programma che ho ottenuto:

mainwindow.obj:-1: error: LNK2019: unresolved external symbol __imp_curl_easy_init referenced in function "private: void __cdecl MainWindow::on_pushButton_clicked(void)" ([email protected][email protected]@AEAAXXZ) 

Su archivio scaricato sono più altri file troppo: http://img13.imageshack.us/img13/1416/reh8.png

Probabilmente ora includo le librerie libs (interno/esterno o dinamico/statico) e non so quale includere e come. E ci sono anche alcuni file .dll che non so cosa fare con.

Qualcuno ha utilizzato con successo libcurl su progetti Qt? Sono un principiante su Qt ed è difficile per me ...

Grazie.

+0

puoi mostrarci i comandi di compilazione e di collegamento qt problemi creatore quando costruisci il tuo progetto? dovrebbero essere nel riquadro di output compilato –

+0

Non so per certo, dove posso ottenere i comandi di compilazione e di collegamento? – caffeine

+0

premi alt + 4 e il riquadro di output compilato dovrebbe apparire, qt creatore ti mostra i comandi che usa per compilare il tuo codice sorgente lì, potresti avere questo problema perché sta emettendo comandi di compilazione sbagliati. Si potrebbe anche ottenere questo problema se la lib che si sta tentando di utilizzare è compilata per 64 bit e la si sta utilizzando su un progetto a 32 bit o viceversa.E, ultimo ma non meno importante, potresti anche trovare questo problema se stai compilando con un compilatore diverso da quello che gli sviluppatori di curl usavano per compilare il lib –

risposta

2

Beh, potrei dire come sto usando libCurl in QT. Se somone ha trovato di nuovo questa domanda. Ma io uso la versione di mingw, quindi potrebbe essere diverso.

Nel file di .pro: cartella "debug"

INCLUDEPATH += C:\Users\pagep\QT\curl-7.31.0-devel-mingw32\include 
LIBS += C:\Users\pagep\QT\curl-7.31.0-devel-mingw32\lib\libcurldll.a 

E in (cartella in cui viene eseguito il programma) ho aggiunto i file dll dalla cartella curl-7.31.0-devel-mingw32 \ bin

libcurl.dll 
libeay32.dll 
libidn-11.dll 
librtmp.dll 
libssh2.dll 
ssleay32.dll 
zlib1.dll 

Beh, probabilmente non è la soluzione migliore ma funziona per me. :)

+0

Ho installato QtSDK + MinGw e il problema persiste. Ricevo questo errore ora: "errore: riferimento non definito a' _imp__curl_easy_init '" – caffeine

+0

Penso di sapere dove si trova il problema. Sul sito di download ufficiale Qt + MinGw sono disponibili solo su x86 e libCURL è disponibile per MinGw solo su x64. Quindi, penso di aver bisogno di scaricare e compilare libCURL Source come x86. @pagep: puoi darmi la cartella libcurl come archivio? O mi ha detto per favore quale versione di Qt stai usando? – caffeine

+0

Risolto. Ho scaricato ogni volta la versione errata dal sito ufficiale di libcurl. Questa è una buona versione http://curl.haxx.se/gknw.net/7.34.0/dist-w32/curl-7.34.0-devel-mingw32.zip – caffeine

2

Questa potrebbe non essere una risposta alla tua domanda, ma ti consiglio di utilizzare la classe QNetworkAccessManager invece di libcurl. Puoi fare quasi tutto con questa classe che puoi fare usando libcurl. Il tuo codice sarà più semplice e più pulito. Alcuni famosi gestori di download basati su Qt completi utilizzano questa classe.

+0

Sì, ho capito che è più nativo usare QNetworkAccessManager. Ma è facile per me usare curl, ho usato curl prima su PHP e non c'è una grande differenza tra php curl e libcurl. Voglio usarlo su Qt e imparare come aggiungere libs sul mio progetto qt e libcurl è il miglior esempio. – caffeine

+0

QNetworkAccessManager è asincrono solo per la versione 5.6 corrente QT, molte persone avranno bisogno di una versione sincrona. –

+0

@RaidenCore La versione di sincronizzazione bloccherà l'interfaccia utente, ecco perché è stata resa asincrona in Qt v4.7 –