Ⅰ. はじめに
cpprestsdk の使い方はこちら
cpprestsdk はNuGetで dynamic link 版が配布されています。
static link 版は配布されていません。
static link する為には2017/10/08時点、自分でビルドするしか方法がありません。
Ⅱ. 必要なもの
- VisualStudio 2015
※VisualStudio 2015以降でも可能ですが、v140のプラットフォームツールセットのインストールが必須です。
※v140プラットフォームツールセットインストール方法
Ⅲ. スタティックライブラリ(.lib)のビルド方法
1. cloneする
git clone https://github.com/Microsoft/cpprestsdk
2. cpprestsdk140.sln を開く
以下のダイアログが出てもUWP, Android対応等必要無ければスキップする。
4. 構成マネージャを開き、Releaseを選択する
プラットフォームは任意の物を選択して下さい。
5. cpprestsdk140.static プロジェクトだけを右クリックしてビルドを実行する
6. スタティックライブラリ(.lib)が作成されます
Ⅳ. 作成したスタティックライブラリ(.lib)を使用する方法
1. プロジェクトのプロパティを開く
- 「構成プロパティ」→「全般」→「プラットフォームツールセット」
「Visual Studio 2015 (v140)」を選択
- 「構成プロパティ」→「C/C++」→「コード生成」→「ランタイムライブラリ」
マルチスレッド(/MT)に変更
2. NuGetからzlibをインストールする
このパッケージはパッケージのオーナーが非公開設定している為、検索しても出てきません。
以下のコマンドを実行する必要があります。
Install-Package zlib.v140.windesktop.msvcstl.static.rt-dyn -Version 1.2.8.8
3. サンプルコード
#include <Windows.h> #include <iostream> #pragma comment(lib, "crypt32.lib") #pragma comment(lib, "bcrypt.lib") #pragma comment(lib, "winhttp.lib") #pragma comment(lib, "libcpprest140_2_9.lib") #include <cpprest/http_client.h> using namespace web; using namespace web::http; using namespace web::http::client; pplx::task<void> Get() { return pplx::create_task([] { http_client client(L"https://jsonplaceholder.typicode.com/posts/1"); return client.request(methods::GET); }).then([](http_response response) { if (response.status_code() == status_codes::OK) { // レスポンスを文字列として取得後、標準出力する // auto body = response.extract_string(); // std::wcout << body.get().c_str() << std::endl; // レスポンスをJSONとして解析する return response.extract_json(); } }).then([](json::value json) { // タイトルだけを取得する std::wcout << json[L"title"].as_string() << std::endl; }); } int main() { // コマンドプロンプトの文字コードをUTF-8に設定する SetConsoleOutputCP(CP_UTF8); try { Get().wait(); } catch (const std::exception &e) { std::cout << "Error = " << e.what() << std::endl; } return 0; }