curl8.6.0 - CURLE_PEER_FAILED_VERIFICATION

文章目录

    • curl8.6.0 - CURLE_PEER_FAILED_VERIFICATION
    • 概述
    • 笔记
    • END

curl8.6.0 - CURLE_PEER_FAILED_VERIFICATION

概述

在看一个开源工程, 里面用到了curl和openssl, 但是工程使用vcpkg来管理的包, 用CMake来编译
依赖太多了, win10 + 编译选项为 vs2019 x64/Win32(或者Ninja)都编译不过 应该是作者给的编译脚本有问题.

openssl我前面实验都编译好了.
现在就差一个curl. 看了curl的编译依赖项(看了几个依赖项的说明, 依赖项本身还有依赖项…), 挺吓人的.
尝试看看用curl官方编译好的curl(dll, lib)看看能用不?

下载官方编译好的curl, 建立了一个vs2019控制台工程, 设置好curl库和头的位置.
将官方demo(D:\my_dev_depend\curl-8.6.0_1-win64-mingw\docs\examples*.c)贴到工程中试试.
试了2个, 都出现了报错, 错误码为 CURLE_PEER_FAILED_VERIFICATION
查了一下, 好像要设置不校验相关选项才行.
咋设置和这个错误码相关的选项呢? 在头文件中猜读/实验了几次, 搞定了.
现在就可以直接用官方编译好的curl, 不用去自己折腾编译工程了. 开源工程依赖多的时候, 自己编译真不好搞定.

这些作者为啥不将依赖项都编译好(或者告诉使用者, 这些依赖项是否有官方编译好的版本), 放在工程目录中, 让使用者直接关心工程本身, 这样会友好很多.

笔记

建立的工程为 vs2019 console x64 debug
下载的官方编译的包为 curl-8.6.0_1-win64-mingw.zip
curl8.6.0 - CURLE_PEER_FAILED_VERIFICATION_第1张图片
curl8.6.0 - CURLE_PEER_FAILED_VERIFICATION_第2张图片

/*! \file curl_v8d6d0_prj_template.cpp
*/

#include 

// 将工程调试的目录设置为 D:\my_dev_depend\curl-8.6.0_1-win64-mingw\bin

// 将工程的库目录设置为 D:\my_dev_depend\curl-8.6.0_1-win64-mingw\lib
#pragma comment(lib, "libcurl.dll.a")

/* 
 * GET a range only of a HTTP resource
 * 
 */
// 将工程的头目录设置为 D:\my_dev_depend\curl-8.6.0_1-win64-mingw\include
#include 

int main(void)
{
    CURL* curl;
    CURLcode res;

    curl = curl_easy_init();
    if (curl) {
        curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.com/");
        curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0); // disable verify for CURLOPT_SSL_VERIFYPEER
        res = curl_easy_perform(curl); // CURLE_PEER_FAILED_VERIFICATION

        if (CURLE_OK == res) {
            char* ct;
            /* ask for the content-type */
            res = curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &ct);

            if ((CURLE_OK == res) && ct)
                printf("We received Content-Type: %s\n", ct);
        }

        /* always cleanup */
        curl_easy_cleanup(curl);
    }
    return 0;
}

END

你可能感兴趣的:(curl,curl)