参照:https://blog.csdn.net/cym1990/article/details/79851039
コンパイル
- https://github.com/curl/curlからソースコードをダウンロードします。ここではcurl-7_65_2を選択します。
- ダウンロードしたソースコードフォルダーを入力し、buildconf.batファイルをダブルクリックして実行します。
- curlフォルダーに「winbuild」フォルダーを入力し、そのフォルダーパスをコピーします。例:E:\ xxxxxxxxxx \ curl-curl-7_65_2 \ winbuild;
- スタートメニューを開き、vs2013のVisual Studioツールで(64ビットをコンパイルする場合)[VS 2017のx64ネイティブツールコマンドプロンプト]を選択し、(32ビットをコンパイルする場合)[VSのx86]を選択します2017ネイティブツールのコマンドプロンプト」、右クリックして管理者として実行します。ここでは、32ビットのコンパイルを選択します。
- vs2013 x86ネイティブツールをコマンドラインに入力し、次のコマンドを入力します。cd/ d E:\ xxxxxxxxxx \ curl-curl-7_65_2 \ winbuild、このディレクトリを入力します。
- コンパイルコマンドを入力します。nmake/ f Makefile.vc mode = static VC = 12 MACHINE = x86そしてEnterキーを押して、コンパイルが完了するのを待ちます。
- コンパイルが完了すると、対応するライブラリファイルがビルドディレクトリに生成されます。ライブラリファイルには、include、lib、binの3つのディレクトリが含まれます。
ここでは、32ビットの静的ライブラリのリリースバージョンをコンパイルしていることに注意してください。
- ダイナミックライブラリをコンパイルするには、「mode = static」を「mode = dll」に変更します。
- デバッグバージョンをコンパイルする必要がある場合は、「DEBUG = no」を「DEBUG = yes」に変更します。DEBUG項目が設定されていない場合、デフォルトはリリースバージョンです。
- 64ビット版をコンパイルする必要がある場合は、「MACHINE = x86」を「MACHINE = x64」に変更してください。
- 他のバージョンのVisualStudioを使用してコンパイルする場合は、「VC =」の後の番号をこのVisualStudioバージョンに変更する必要があります。
テスト用の新しいプロジェクト
空のプロジェクトを作成し、次のコードを追加します。
#include "include/curl/curl.h"
int main()
{
curl_easy_init();
return 0;
}
そして、生成されたフォルダ内の「include」フォルダと「lib」フォルダをプロジェクトに追加します。
静的ライブラリ「libcurl_a.lib」をプロジェクトに追加します。
libcurlを静的にコンパイルするため、プロジェクトの前処理に「CURL_STATICLIB」を追加する必要があります。
考えられるエラーと解決策:
エラー1:未解決の外部シンボル__imp__curl_easy_init
Libcurlはプログラムにリンクされておらず、この関数エントリが見つかりません。
解決策:プロジェクトのプロパティを開き、プロパティを構成します-C / C ++-プリプロセッサ-プリプロセッサの定義-ドロップダウンボックスを開きます-編集-テキストボックスにCURL_STATICLIBを入力します-保存
(またはcurl.hの#define CURL_STATICLIB)
エラー2:未解決の外部シンボル__imp__CertOpenStore @ 20
解決策:追加:プロジェクトプロパティのCrypt32.lib-リンカー-入力-追加の依存関係。
エラー3:未解決の外部シンボル__imp__IdnToAscii @ 20
解決策:追加:プロジェクトのプロパティにNormaliz.lib-リンカー-入力-追加の依存関係。
エラー4:未解決の外部シンボル__imp__WSAStartup @ 8
未解決の外部シンボル__imp__ldap_init
解決策:プロジェクトのプロパティにws2_32.lib、wldap32.libを追加します-リンカー-入力-追加の依存関係。
参照:https://blog.csdn.net/px41834/article/details/81627170