2012-01-22 50 views
4

我想鏈接QT中的libCurl到Windows 7 x64上的C++程序,但是當我嘗試鏈接libcurldll.a時,我得到一個巨大的錯誤列表。我試着編譯一個與GCC g++ -LC:\MinGW\lib -lcurldll相似的函數,它編譯時沒有錯誤。我在QT和GCC中使用下面的代碼。在QT中鏈接libCurl給出了一個巨大的錯誤列表C++

void MainWindow::on_pushButton_2_clicked() 
{ 
    CURL *curl; 
    curl = curl_easy_init(); 
    curl_easy_setopt(curl, CURLOPT_URL, "http://google.com"); 
    curl_easy_perform(curl); 
    curl_easy_cleanup(curl); 
} 

QT給了我一個巨大的,我已經粘貼here錯誤的列表。一些關鍵錯誤是tlsthrd.c:-1: error: undefined reference to '[email protected]'我在.pro文件中使用LIBS += -LC:\MinGW\lib -lcurldll將項目鏈接到捲曲庫。任何想法爲什麼會發生這種情況?乾杯。

編輯:經過深入瞭解,看起來好像libmingw32.a有一些問題提供了用於多線程的函數的引用。我應該嘗試更換庫文件嗎?如果是這樣,爲什麼GCC使用相同的庫文件正確編譯,但QT不是?

+0

只是'-lcurl'怎麼樣? – karlphillip

+1

EnterCriticalSection在Kernel32.lib中定義。也許你不包括所需的圖書館? –

+0

'-lcurl'不起作用,因爲我在Windows上。這隻適用於Unix庫。我嘗試鏈接'Kernel32.lib',但產生更多的錯誤。 – user99545

回答

2

win32:LIBS += c:\MinGW\lib\libcurldll.a添加到.pro文件中有竅門。

1

布拉普。不要使用lib捲曲,Qt已經有QNetworkAccessManager已經優雅地處理使用線程安全的Qt信號的請求和響應。你需要的一切都已經在那裏了。

+0

我發現libCurl對我來說更合適,因爲我將它與我的所有程序一起使用。對於我來說,學習另一個QT項目庫似乎不切實際。不過,我會看看QNetworkAccessmanager。 – user99545

+0

如果你在示例中使用lib curl,整個UI將會阻塞,而lib curl會停止執行它。其中,如果你對......感到滿意的話。但QNetworkAccessManager非常棒,就像一樣。 :D – synthesizerpatel

+0

是的,我發現了。我的計劃是打開一個線程,執行卷曲功能,然後返回。我假設QNetworkAccessManager做了類似的事情。 – user99545