2012-01-22 7 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

私はWindows上にあるため、 '-lcurl'は動作しません。これはUnixライブラリでのみ動作します。私は 'Kernel32.lib'をリンクしようとしましたが、さらに多くのエラーが生成されます。 – user99545

答えて

2

win32:LIBS += c:\MinGW\lib\libcurldll.a.proファイルに追加すると、そのトリックが行われました。

1

Blarp。 lib curlを使わないでください。Qtは既にスレッドセーフなQtシグナルを使って要求と応答をうまく処理するQNetworkAccessManagerを持っています。あなたが必要とするものはすべてすでにあります。

+0

libCurlは私のすべてのプログラムで使用するので、私にはうってつけです。私がQTプロジェクトのために別の図書館を学ばなければならないのは実用的ではないようです。 QNetworkAccessmanagerを見ていきます。 – user99545

+0

例で示しているようにlib curlを使用すると、UI全体がブロックされ、lib curlが機能しなくなります。それで、もしあなたが居心地が良ければ、是非。しかし、QN​​etworkAccessManagerはまったく同じです。 :D – synthesizerpatel

+0

ええ、私はそれを発見しました。私の計画は、スレッドを開いて、カール機能を実行した後、再び参加することでした。私は、QNetworkAccessManagerが何か類似していると仮定しています。 – user99545

関連する問題