-
Notifications
You must be signed in to change notification settings - Fork 0
libcurl導入方法
libcurl(7.65.1)導入時の導入方法を書き記します。(備忘録)
- Cmakeをインストールする
- libcurlのソースをdownloadする(Windowsではなくページ一番上のを選ぶ)
- Visual Studio2019をインストールする
Cmakeを使ってvcprojファイルを生成します。
projectsディレクトリにもvcprojファイルがあるが、それはVS2019に対応していないので使わないこと
Where is the source code[Browse Source...]でダウンロードしたlibcurlを展開したディレクトリを選びます。
Where to build the binaries[Browse Build]でビルド先のディレクトリを選びます。
ビルド先!=ソースファイル
別のディレクトリを選ぶのが無難です。
まずは1回[Configure]を押します。
すると次のような画面が出ます。
Specify the generator for this projectに
Visual Studio 16 2019
Optional platform for generatorに
x64
を選びます。(上の画像の通りでOK)
[Finish]を押すとConfigureの設定が自動で始まります。しばし待ちましょう。
赤いボックスがたくさん出てきます。(エラーではないので安心してください。)
下の画像の通り設定しましょう。具体的に変わったところは
- BUILD_CURL_EXEのチェックを外す(使わないので)(まあ任意)
- CMAKE_USE_WINSSLのチェックを入れる(入れないとhttpsのサイトの情報が取得できない)
- ENABLE_DEBUGのチェックを入れる
以上を設定したら、再度[Configure]を押します。
下の画像のようになるはずです。
すると再度赤いボックスが出てくるのでもう一度[Configure]を押します。
下のダイアログに"Configuring done"と出ればOKです。
[Generate]を押します。
下のダイアログに"Generating done"と出ればOKです。
ビルド先に生成したファイル群があるか確認しましょう。
ビルド先の直下にCURL.slnがあるのでそれをVS2019で開きます。
DebugとReleaseの構成それぞれ1回ずつソリューションのビルドをします。
すると"ビルド先/lib/Debug(Release)"にdllとかがあるはずです。
確認したらVS2019をいったん閉じます。
VS2019でlibcurlを使いたいプロジェクトを開きます。
プロジェクトのディレクトリを開き、プロジェクトファイルと同じディレクトリにlibcurlフォルダを作ります。(おすすめはMain.cppとかおいてあるあたり)
そこにこんな感じでディレクトリを作ります。
└libcurl ├include(解凍したソースファイル直下にあるincludeディレクトリをコピーする) └lib ├Debug(ビルド先/lib/Debugをコピーする) └Release(ビルド先/lib/Releaseをコピーする)
ただし、Debug(Release)内にあるdllファイルは一度取り除いてください。
左上の構成をすべての構成にします。プラットフォームはx64です。
[VC++ディレクトリ]に行き、[インクルードディレクトリ]の編集画面を開きます。
新しい行に"$(ProjectDir)libcurl¥include"と入れOKを押します。
適用をし、構成をDebugにして[ライブラリディレクトリ]に編集画面を開きます。
同様に新しい行に"$(ProjectDir)libcurl¥lib¥Debug"と入れOKを押します。
構成をReleaseにして同様に"$(ProjectDir)libcurl¥lib¥Release"と入れOKを押します。
一度適用を押した後[リンカー]->[入力]の[追加の依存ファイル]の編集画面を開きます。
ディレクトリ設定の時と同様に
Debugでは"libcurl-d_imp.lib"
Releaseでは"libcurl_imp.lib"
をそれぞれに追加します。
Debug、Releaseそれぞれの構成で1度ビルドを行ってください。(HelloworldでOK)
次にプロパティの[全般]の[出力ディレクトリ]の編集画面を開きます。
下のボックスのディレクトリ(反転している文字)のパスに行ってファイル配置で取り除いておいたdllを配置します。
具体的には
Debugに"libcurl-d.dll"
Releaseに"libcurl.dll"
以上を行ったらlibcurlを使うプログラムを実行して、動作確認出来たら終了です。
#include <iostream> #include <curl/curl.h> using namespace std; //TestCode size_t callbackWrite(char* ptr, size_t size, size_t nmemb, std::string* stream) { size_t dataLength = size * nmemb; stream->append(ptr, dataLength); return dataLength; } int main() { CURL* curl; CURLcode ret; curl = curl_easy_init(); std::string chunk; if (curl == NULL) { cerr << "curl_easy_init() failed" << endl; return 1; } curl_easy_setopt(curl, CURLOPT_URL, "https://www.google.com/"); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, callbackWrite); curl_easy_setopt(curl, CURLOPT_WRITEDATA, &chunk); ret = curl_easy_perform(curl); curl_easy_cleanup(curl); if (ret != CURLE_OK) { cerr << "curl_easy_perform() failed." << endl;; return 1; } cout << chunk << endl; }
インクルードディレクトリの設定を確認してください。
ライブラリディレクトリの設定を確認してください。
出力ファイルのディレクトリにdllが置いてあるか確認してください。
CMAKE_USE_WINSSLにちゃんとチェックを入れたか確認してください。
わからん。でも大体ググれば出る。