13

*編集: 次の手順に従って、64 ビット マシン上の VS 2017 で CURL を動作させました (元の問題については以下を参照してください)。

最初に vcpkg をインストールします。

  1. gitbashを使用して vcpkg をクローンしますC:\Program Files
  2. コマンド プロンプトで次の場所に移動します。C:\Program Files\vcpkg
  3. コマンド プロンプトで実行します。.\bootstrap-vcpkg.bat
  4. コマンド プロンプトで実行します。vcpkg integrate install

次に、vcpkg と Visual Studios 2017 コマンド プロンプトを使用して cURL をインストールします。

  1. を開き、VS 2017 Command promptvcpkg フォルダー ( がある場所vcpkg.exe)に移動します。
  2. 実行: vcpkg install curl[*]:x64-windows(このダウンロードと実行には約 30 分かかることに注意してください。部分的に「スタック」しているように見えても心配しないでください)。

    *編集: 以前は実行するように指示されていましたが、@i7clock の命令で sftp および scp プロトコルを有効にするようvcpkg install curl:x64-windowsに追加しました。[*]

  3. この手順の後、curl が正しくインストールされていることを確認する必要があります。これを行うには、VS 2017 で新しいプロジェクトを作成し、#include curl/curl.h追加のインクルード ディレクトリを追加せずに試してインクルードする必要があります。これができない場合は、curl のインストールに問題があります。を含めることができるようになるまで、curl (およびおそらく vcpkg フォルダーも) を削除して、クリーン インストールを実行する必要がありますcurl/curl.h

    *重要な注意: これは、x64 デバッガーを使用している場合、または x64 でコンパイルしている場合にのみ機能します。curl ディレクトリを含めることができない場合は、デバッグが正しいバージョンの Windows に設定されていることを確認してください。

SSL ピア検証も無効にする必要がある場合があります。

  1. リクエストの前にコードを配置しますcurl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE);(以下を参照)。これは、curl で証明書を取得する方法がわからなかったためにのみ必要であることに注意してください。この問題に関して、まだ回答されていないスタックオーバーフローの投稿があります

実行するために必要なその他の手順を次に示しますが、最終的には必要ないことがわかりました。

  1. vcpkg\packages\curl_x64-windows\lib に移動して、libcurl.lib ファイルを見つけます。
  2. [プロパティ] -> [リンカー] の下の [追加のライブラリ ディレクトリ] に libcurl.lib へのパスを含めます。
  3. [リンカー] -> [入力] -> [追加の依存関係] の下の [追加の依存関係] に libcurl.lib を含めました。
  4. プロパティに配置CURL_STATICLIB-> C/C++ -> プリプロセッサ -> プリプロセッサ定義

ここに私の現在の作業コードがあります:

#include "curl/curl.h"


void testCurl() {
    CURL *curl;
    CURLcode res; 

    curl_global_init(CURL_GLOBAL_ALL); 

    curl = curl_easy_init();
    if (curl) {
      curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, FALSE);
      curl_easy_setopt(curl, CURLOPT_URL, "https://example.com/");

    #ifdef SKIP_PEER_VERIFICATION
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
    #endif

    #ifdef SKIP_HOSTNAME_VERIFICATION
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
    #endif

    res = curl_easy_perform(curl);

   if (res != CURLE_OK)
       fprintf(stderr, "curl_easy_perform() failed: %s\n",
       curl_easy_strerror(res));

       curl_easy_cleanup(curl);
 }
 curl_global_cleanup();
}

int main(){
    testCurl();
    return 0;
}

*編集:修正される前の私の古い問題の残りの説明は次のとおりです。

リアルタイムの株式データの取得を開始できるように、cURL を使用して API 呼び出しを実行しようとしていますが、VS 2017 で機能させるのに問題が発生しています。次の手順を使用して、vcpckg を使用してインストールを試みました。

vcpkg のドキュメントによると、単純に #include できるはずですが、フォルダーが見つかりません。vcpkg\packages\curl_x86\include と #include から「include」ディレクトリを含めようとすると、プロジェクトをビルドできます。一部のクラスにもアクセスできますが、この例のように curl_global_init(CURL_GLOBAL_DEFAULT) を設定しようとすると、リンカー エラーが発生します。

リンカー エラー curl_global_init エラー

4

2 に答える 2