2013-09-23 19 views
6

curently मैं अपने सिस्टम पर स्थापित किया है क्यूटी-windows-ओपनसोर्स-5.1.1-msvc2012-x86_64-ऑफ़लाइनसंकलक के रूप में MSVC2012 साथ क्यूटी निर्माता पर libCURL का उपयोग कैसे करें

सभी ठीक काम करता है, लेकिन मैं वास्तव में succed नहीं कर सकते मेरे क्यूटी परियोजना पर libCurl का उपयोग करने के लिए।

मैं 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 

मैं स्थानांतरित कर दिया संग्रह से कुलपति के लिए फ़ोल्डर शामिल फ़ोल्डर में शामिल हैं और मैं # शामिल के साथ कार्यक्रम में शामिल किया है और अच्छा काम करता है।

अब lib फ़ोल्डर पर नामों के साथ दो और फ़ोल्डर्स हैं: डीबग और रिलीज और दोनों में कुछ फाइलें हैं।

मेरी .pro फ़ाइल पर मैं जोड़ लिया है:

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 

और अब जब मैं एक साधारण प्रोग्राम मुझे मिल चलाने का प्रयास:

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]@@AEAAXXZ) 

डाउनलोड की संग्रह पर अधिक अन्य फ़ाइलें भी कर रहे हैं: http://img13.imageshack.us/img13/1416/reh8.png

शायद मैं अब libs fine (आंतरिक/बाहरी या गतिशील/स्थिर) समेत हूं और मुझे नहीं पता कि कौन सा शामिल करना है और कैसे। और कुछ .dll फ़ाइलें भी हैं जो मुझे नहीं पता कि साथ क्या करना है।

क्या किसी ने क्यूटी परियोजनाओं पर सफलतापूर्वक libcurl का उपयोग किया है? मैं क्यूटी पर शुरुआत कर रहा हूं और यह मेरे लिए मुश्किल है ...

धन्यवाद।

+0

क्या आप हमें अपनी परियोजना के निर्माण के दौरान क्यूटी निर्माता मुद्दों को संकलित और लिंक कर सकते हैं? वे संकलन आउटपुट फलक –

+0

में होना चाहिए, मुझे यकीन नहीं है, जहां मैं संकलन और कमांड को जोड़ सकता हूं? – caffeine

+0

प्रेस alt + 4 और संकलन आउटपुट फलक आना चाहिए, क्यूटी निर्माता आपको आपके स्रोत कोड को संकलित करने के लिए उपयोग किए जाने वाले आदेश दिखाता है, आपको यह समस्या हो सकती है क्योंकि यह गलत संकलन आदेश जारी कर रहा है। यदि आप जिस lib का उपयोग करने का प्रयास कर रहे हैं, उसे 64 बिट्स के लिए संकलित किया गया है और आप इसे 32 बिट प्रोजेक्ट या इसके विपरीत उपयोग कर रहे हैं, तो आपको यह समस्या भी मिल सकती है।और आखिरी लेकिन कम से कम आपको यह समस्या भी मिल सकती है यदि आप एक अलग कंपाइलर के साथ संकलित कर रहे हैं, जो कि कर्ल डेवलपर्स lib –

उत्तर

2

अच्छी तरह से मैं बता सकता हूं कि मैं QT में libCurl का उपयोग कैसे कर रहा हूं। अगर कोई इस सवाल पर फिर से आया। लेकिन मैं mingw संस्करण का उपयोग करता हूं, इसलिए यह अलग हो सकता है।

.pro फ़ाइल में:

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 

और में "डिबग" फ़ोल्डर (फ़ोल्डर जहां कार्यक्रम क्रियान्वित किया जाता है) मैं फ़ोल्डर कर्ल-7.31.0-devel-mingw32 \ बिन से फाइल .dll जोड़ा

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

वैसे यह शायद सबसे अच्छा समाधान नहीं है लेकिन यह मेरे लिए काम करता है। :)

+0

मैंने QtSDK + MinGw स्थापित किया है और समस्या बनी रहती है। मुझे यह त्रुटि अब मिलती है: "त्रुटि:' _imp__curl_easy_init 'के लिए अपरिभाषित संदर्भ " – caffeine

+0

मुझे लगता है कि मुझे पता है कि समस्या कहां है। आधिकारिक डाउनलोड साइट पर Qt + MinGw केवल x86 पर उपलब्ध है और libCURL केवल x64 पर MinGw के लिए उपलब्ध है। इसलिए, मुझे लगता है कि मुझे lib86 सर्वर को x86 के रूप में डाउनलोड और संकलित करने की आवश्यकता है। @pagep: क्या आप मुझे अपना libcurl फ़ोल्डर संग्रह के रूप में दे सकते हैं? या मुझे बताया कृपया क्यूटी का कौन सा संस्करण आप उपयोग कर रहे हैं? – caffeine

+0

हल हो गया। मैंने आधिकारिक libcurl साइट से हर बार गलत संस्करण डाउनलोड किया है। यह अच्छा संस्करण है http://curl.haxx.se/gknw.net/7.34.0/dist-w32/curl-7.34.0-devel-mingw32.zip – caffeine

2

यह आपके प्रश्न का उत्तर नहीं हो सकता है, लेकिन मैं libcurl के बजाय QNetworkAccessManager क्लास का उपयोग करने की अनुशंसा करता हूं। आप इस वर्ग के साथ लगभग कुछ भी कर सकते हैं जिसे आप libcurl का उपयोग करके कर सकते हैं। आपका कोड सरल और अधिक क्लीनर होगा। कुछ प्रसिद्ध पूर्ण विशेष रुप से प्रदर्शित क्यूटी आधारित डाउनलोड प्रबंधक इस वर्ग का उपयोग करते हैं।

+0

हाँ, मैं समझता हूं कि QNetworkAccessManager का उपयोग करने के लिए अधिक देशी है। लेकिन मेरे लिए कर्ल का उपयोग करना आसान है, मैंने PHP पर पहले कर्ल का उपयोग किया है और php curl और libcurl के बीच कोई बड़ा अंतर नहीं है। मैं इसे क्यूटी पर उपयोग करना चाहता हूं और सीखना चाहता हूं कि मेरे क्यूटी प्रोजेक्ट पर libs कैसे जोड़ें और libcurl सबसे अच्छा उदाहरण है। – caffeine

+0

QNetworkAccessManager केवल वर्तमान QT संस्करण 5.6 के लिए async है, कई लोगों को एक तुल्यकालिक संस्करण की आवश्यकता होगी। –

+0

@RaidenCore सिंक संस्करण आपके यूआई को अवरुद्ध कर देगा, यही कारण है कि इसे क्यूटी v4.7 –

संबंधित मुद्दे