代码之家  ›  专栏  ›  技术社区  ›  EliSquared

2017年让cURL与Visual Studio合作

  •  15
  • EliSquared  · 技术社区  · 7 年前

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

    首先安装vcpkg:

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

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

    1. 打开a VS 2017 Command prompt 然后导航到vcpkg文件夹(其中 vcpkg.exe is)
    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帖子 here .

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

    1. 导航到vcpkg\packages\curl\u x64-windows\lib以查找libcurl。lib文件。
    2. 包括libcurl的路径。属性下其他库目录中的库->连接器
    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中,我很难让它发挥作用。我已尝试 install using vcpckg 使用以下步骤:

    根据vcpkg文档,我现在应该可以简单地#包含,但它找不到文件夹。如果我尝试从vcpkg\packages\curl\u x86\include和#include中包含“include”目录,我可以构建我的项目。我也可以访问一些类,但如果我尝试设置curl\u global\u init(curl\u global\u DEFAULT),如本例所示,我会遇到链接器错误。

    Linker error curl_global_init error

    2 回复  |  直到 5 年前
        1
  •  9
  •   roschuma    7 年前

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

    >vcpkg install curl:x64-windows

        2
  •  0
  •   EvanPoe    3 年前

    2021,在windows 10上,使用当前的Visual Studio。 vcpkg install curl[*]:x64-windows 不起作用。我收到BUILD\u FAILED错误。 vcpkg install curl 对我有效,只需约30秒