3

libcurl は、Visual Studio 6 を使用してコンパイルされた Windows XP で実行されている C プログラムから JMS キューにメッセージをポストするために使用しようとしているものです。

これで、libcurl.lib にリンクする必要がありますが、これはどこから入手できますか?

私は自分のプログラム (wsock32.lib、kernel32.lib など) に多数の lib をリンクしているので、いったん入手できれば問題はありません。

すべての Win32-Generic バイナリなど (http://curl.haxx.se/download.html) をダウンロードしましたが、必要な lib/headers が含まれていません。

誰もが私がどこからそれらを入手したかを知っています。

助けてくれてありがとう。

  • 現在 64 ビット マシンで実行中の問題 - 私の「回答」投稿を参照してください
4

1 に答える 1

1

あなたが提供したリンク (直接リンク) を使用しました。libcurl_imp.lib を dll にリンクすると、正常にコンパイルされます。私のアプリは、curl メソッドを正常に呼び出す新しいライブラリ ルーチンを呼び出すことができます- 同じ dll/バイナリ アプリを 32 ビット XP マシンで実行しようとすると、すぐにダンプされます。実際、すべてのアプリケーションが異常終了します。アプリケーションは新しいライブラリ ルーチンを参照せず、dll を使用するだけです。dll に cURL 呼び出しを組み込むだけで、生成されたプロセスがすぐに中止されるようです。

1 + 完了(134) testapp

5656 testapp の中止

main の直後に printf ステートメントがありますが、コマンド ラインに出力がありません。

次に、1 つを除いて、すべての新しいライブラリ関数を dll から削除しました。これで行うことは次のとおりです。</p>

CURLcode res = curl_global_init(CURL_GLOBAL_DEFAULT);

この 1 行が原因で、dll に組み込むと、すべてのアプリが 32 ビットで失敗します。コメント アウトすると、すべて動作します。

述べたように、同じ dll/バイナリが私の 64 ビット マシンで正常に動作します。64 ビット マシンには、私の 32 ビット マシンのものと同じ curllib.dll があります。

参考までに、私のビルド マシンは 32 ビットです。32 ビットと 64 ビットの両方のプロダクション マシンがあります。

あなたが私に送ったリンクは、実際には 64 ビットのみですか?

于 2012-09-19T10:12:19.547 に答える