让cURL与Visual Studio 2017一起使用

Eli*_*red 9 c++ linker curl visual-studio-2017 vcpkg

*编辑:我按照这些步骤在64位机器上使用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. 打开a VS 2017 Command prompt并导航到vcpkg文件夹(其中vcpkg.exe)
  2. 运行:( vcpkg install curl[*]:x64-windows注意这可能需要大约半小时才能下载并运行,如果它看起来像是"卡在"部件,请不要担心).

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

  3. 完成此步骤后,应检查以确保正确安装卷曲.为此,您应该在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);在请求之前放置代码(见下文).请注意,这只是必要的,因为我无法弄清楚如何使用卷曲来使用证书.我有一个关于这个问题的AS-的,但没有答案计算器后这里.

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

  1. 导航到vcpkg\packages\curl_x64-windows\lib以查找libcurl.lib文件.
  2. 在Properties - > Linker下的Additional Library Directories中包含libcurl.lib的路径
  3. 在Linker - > Input - > 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;
}
Run Code Online (Sandbox Code Playgroud)

*编辑:以下是我的旧问题在解决之前的其余解释:

我正在尝试使用cURL进行API调用,因此我可以开始获取实时库存数据,但是我遇到了在VS 2017中运行它的困难.我尝试使用vcpckg使用以下步骤进行安装:

根据vcpkg文档我现在应该能够#include,但它找不到该文件夹​​.如果我尝试从vcpkg\packages\curl_x86\include和#include中包含"include"目录,我可以构建我的项目.我也可以访问一些类,但如果我尝试设置curl_global_init(CURL_GLOBAL_DEFAULT),就像在这个例子中我得到链接器错误.

链接器错误 curl_global_init错误

ros*_*uma 6

你已经用vcpkg安装了x86版本的curl(那是x86 vcpkg\packages\curl_x86\include).您需要安装x64版本以匹配您的项目:

>vcpkg install curl:x64-windows