静态curl库编译与使用(c++)

这篇具有很好参考价值的文章主要介绍了静态curl库编译与使用(c++)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

静态curl库编译与使用

静态curl库编译与使用:mingw https://curl.se/windows/

// 测试:设置URL地址
// curl_easy_setopt(curlHandle, CURLOPT_URL, “https://ipinfo.io/json”);
// curl_easy_setopt(curlHandle, CURLOPT_SSL_VERIFYPEER, 0L);
// curl_easy_setopt(curlHandle, CURLOPT_SSL_VERIFYHOST, 0L);文章来源地址https://www.toymoban.com/news/detail-825835.html

#include <iostream>

#include <chrono>
#include <iomanip>
#include <sstream>

std::string log_time()
{
    time_t t = time(nullptr);
    char tmp[25]{};
    struct tm* timinfo = localtime(&t);
    strftime(tmp, sizeof(tmp), "%Y-%m-%dT%H:%M:%S", timinfo);
    return tmp;
}

#include <curl/curl.h>
#pragma comment(lib, "libbrotlicommon.a")
#pragma comment(lib, "libbrotlidec.a")
#pragma comment(lib, "libcrypto.a")

#pragma comment(lib, "libcurl.a")
#pragma comment(lib, "libnghttp2.a")
#pragma comment(lib, "libnghttp3.a")
#pragma comment(lib, "libngtcp2.a")
#pragma comment(lib, "libngtcp2_crypto_quictls.a")
#pragma comment(lib, "libpsl.a")
#pragma comment(lib, "libssh2.a")
#pragma comment(lib, "libssl.a")
#pragma comment(lib, "libz.a")
#pragma comment(lib, "libzstd.a")

#pragma comment(lib, "libmingwex.a")
#pragma comment(lib, "libgcc.a")

#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "wldap32.lib")
#pragma comment(lib, "bcrypt.lib")
#pragma comment(lib, "winmm.lib")
#pragma comment(lib, "advapi32.lib")
#pragma comment(lib, "crypt32.lib")
#pragma comment(lib, "Normaliz.lib")
#pragma comment(lib, "legacy_stdio_definitions.lib")

#include <iostream>
#include <string>

// 定义回调函数,用于处理收到的响应数据
size_t WriteCallback(void* contents, size_t size, size_t nmemb, std::string* response) {
    size_t totalSize = size * nmemb;
    response->append((char*)contents, totalSize);
    return totalSize;
}

int main() {
    CURL* curlHandle;
    CURLcode res;

    // 初始化Curl
    curl_global_init(CURL_GLOBAL_DEFAULT);

    // 创建Curl会话
    curlHandle = curl_easy_init();
    if (curlHandle == nullptr) {
        std::cout << "Failed to create a new CURL handle." << std::endl;
        return -1;
    }

    try {
        // 设置URL地址
        curl_easy_setopt(curlHandle, CURLOPT_URL, "https://ipinfo.io/json");
        curl_easy_setopt(curlHandle, CURLOPT_SSL_VERIFYPEER, 0L);
        curl_easy_setopt(curlHandle, CURLOPT_SSL_VERIFYHOST, 0L);
        //curl_easy_setopt(curlHandle, CURLOPT_SSL_VERIFYPEER, 1L);//winssl编译时使用windows自带的根证书
        //curl_easy_setopt(curlHandle, CURLOPT_SSL_VERIFYHOST, 2L);
        //curl_easy_setopt(curlHandle, CURLOPT_MAXREDIRS, 5);

        //curl_easy_setopt(curlHandle, CURLOPT_FOLLOWLOCATION, 1);
        //curl_easy_setopt(curlHandle, CURLOPT_NOSIGNAL, 1L);
        //curl_easy_setopt(curlHandle, CURLOPT_AUTOREFERER, 1L);
        //curl_easy_setopt(curlHandle, CURLOPT_POST, false);

        //curl_easy_setopt(curlHandle, CURLOPT_FAILONERROR, 1L);
        //curl_easy_setopt(curlHandle, CURLOPT_CONNECTTIMEOUT, 30L);

        //curl_easy_setopt(curlHandle, CURLOPT_LOW_SPEED_TIME, 60L);
        //curl_easy_setopt(curlHandle, CURLOPT_LOW_SPEED_LIMIT, 30L);

        // 设置写入回调函数
        std::string responseData;
        curl_easy_setopt(curlHandle, CURLOPT_WRITEFUNCTION, WriteCallback);
        curl_easy_setopt(curlHandle, CURLOPT_WRITEDATA, &responseData);

        // 发送GET请求
        res = curl_easy_perform(curlHandle);
        if (res != CURLE_OK) {
            std::cerr << "Error occurred while sending request: " << curl_easy_strerror(res) << std::endl;
            throw - 1;
        }
        else {
            // 打印响应结果
            std::cout << "Response data:\n" << responseData << std::endl;
        }
    }
    catch (...) {
        // 错误处理
        std::cerr << "An error occurred during the process." << std::endl;
        return -1;
    }

    // 清理资源
    curl_easy_cleanup(curlHandle);
    curl_global_cleanup();

    return 0;
}

到了这里,关于静态curl库编译与使用(c++)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • golang 中使用 statik 将静态资源编译进二进制文件中

    现在的很多程序都会提供一个 Dashboard 类似的页面用于查看程序状态并进行一些管理的功能,通常都不会很复杂,但是其中用到的图片和网页的一些静态资源,如果需要用户额外存放在一个目录,也不是很方便,如果能打包进程序发布的二进制文件中,用户下载以后可以直接

    2024年01月19日
    浏览(46)
  • windows编译X64curl库

    用Windows的nmake 1.下载curl https://curl.haxx.se/download.html 2.利用vs的nmake(Microsoft Program Maintenance Utility) vs-工具-命令行-开发者命令提示 3.编译 nmake /f Makefile.vc mode=static VC=14 DEBUG=no MACHINE=x86 4.编译产物位于curl目录下builds目录

    2024年01月18日
    浏览(35)
  • linux编译curl库(支持https)

    openssl下载和编译 https://www.openssl.org/source/old/ 解压 配置 如果是编译静态库加入 -fPIC no-shared 如果指定安装路径,使用 --prefix=/usr/local/openssl/ 选项指定特定目录 编译和安装 curl下载和编译 https://curl.se/download.html 解压 配置 如果想要编译静态库,加入 --disable-shared 选项 如果需要指

    2024年02月09日
    浏览(39)
  • 【c/c++】curl编译(CMake方式)

    下载地址:curl - Download 进入下载页面,选择Old Releases。 这玩意居然有官网,刷新了我的认知,省事啊。 Download | CMake 1、点击【Browse Source ...】,先选择源目录。 2、点击【Browse Build ...】,先选择目标目录。 3、点击【Configure】。 这里可以选择VS版本。 4、点击【Genrate】。 生

    2024年02月03日
    浏览(34)
  • 【Linux】Linux编译器 gcc 的使用 | 动静态库的初步认识

    👑作者主页:@安 度 因 🏠学习社区:StackFrame 📖专栏链接:Linux

    2024年01月15日
    浏览(34)
  • 【Linux】Linux编译器 gcc/g++的使用&&初识动静态链接库

    ​ ​📝个人主页:@Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:Linux 🎯 长路漫漫浩浩,万事皆有期待 上一篇博客:【Linux】Linux环境基础工具的基本使用及配置(yum、vim) 在上一篇 Linux 博客中,我们讲解了 vim 编辑器的使用,可以在 Linux 上写

    2024年02月11日
    浏览(51)
  • Ubuntu18.04 交叉编译curl-7.61.0

    官方网址是:curl  如果需要curl支持https协议,需要先交叉编译 openssl,编译流程如下: Ubuntu18.04 交叉编译openssl-1.1.1_我是谁??的博客-CSDN博客 配置完成之后可以看到如下日志   安装完成如下:  

    2024年02月11日
    浏览(44)
  • iOS 开发-编译第三方库 openssl及curl

    iOS编译库需要三个架构,arm64,arm64e,x86_64,其中x86_64为模拟器所需 iOS编译库需要下载xcode及对应的command line tool(执行命令时可以自动下载),下载失败需要去官网搜索下载 参考iOS如何编译OpenSSL静态库(openssl版本:1.1.1b) 执行配置命令(路径修改为要生成的目标架构文件夹路径

    2024年02月13日
    浏览(36)
  • RT-Thread开发,使用SCons编译,生成静态库,并进行链接生成MCU程序

            SCons 是一个开放源代码、以 Python 语言编写的下一代的程序建造工具。它最初的名字是 ScCons, 基于由 perl 语言编写的 Cons 软件开发而成,它在 2000 年 8 月获得了由 Software Carpentry 举办的 SC 建造比赛的大奖。现在 ScCons 已经被改名为 SCons,目的是为了表示不再与 Sof

    2024年02月11日
    浏览(41)
  • 【QT+QGIS跨平台编译】之五:【curl+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

    (libcurl编译,依赖OpenSSL、libSSH2等库) curl(CommandLine Uniform Resource Locator)主要功能就是用不同的协议连接和沟通不同的服务器,相当封装了的socket。 libcurl支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传(当然你也可

    2024年01月23日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包