13

*编辑:我按照以下步骤在 64 位机器上的 VS 2017 中使用 CURL(原始问题见下文):

首先安装 vcpkg:

  1. 使用 gitbash克隆vcpkgC:\Program Files
  2. 在命令提示符下导航到C:\Program Files\vcpkg
  3. 在命令提示符下运行:.\bootstrap-vcpkg.bat
  4. 在命令提示符下运行:vcpkg integrate install

然后使用 vcpkg 和 Visual Studios 2017 命令提示符安装 cURL:

  1. 打开 aVS 2017 Command prompt并导航到 vcpkg 文件夹(在哪里vcpkg.exe
  2. 运行:(vcpkg install curl[*]:x64-windows请注意,下载和运行可能需要大约半小时,如果它看起来像是“卡在”部分,请不要担心)。

    *编辑:以前我的指令说要运行vcpkg install curl:x64-windows,但我在[*]@i7clock 的要求下添加了启用 sftp 和 scp 协议。

  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。我在这里有一个关于这个问题的尚未回答的 stackoverflow 帖子。

以下是您可能需要尝试运行的一些其他步骤,但我最终发现它们不是必需的:

  1. 导航到 vcpkg\packages\curl_x64-windows\lib 以找到 libcurl.lib 文件。
  2. 在 Properties -> Linker 下的 Additional Library Directories 中包含 libcurl.lib 的路径
  3. 在 Linker -> Input -> Additional Dependencies 下的 Additional Dependencies 中包含 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

9

您已经使用 vcpkg 安装了 x86 版本的 curl(即 x86 in vcpkg\packages\curl_x86\include)。您需要安装 x64 版本以匹配您的项目:

>vcpkg install curl:x64-windows

于 2017-12-21T08:47:21.090 回答
0

2021 年,在 Windows 10 上,使用当前的 Visual Studio。vcpkg install curl[*]:x64-windows不起作用。我收到 BUILD_FAILED 错误。vcpkg install curl对我有用,只需要大约 30 秒

于 2021-09-24T00:13:31.690 回答