Windows下curl编译,使用vcpkg定制自己的【curl】。

news2024/9/30 9:29:28

         本篇介绍在Windows下如何编译curl,curl自称是星球上最好用的计算机网络工具,但是它在windows上纯手动编译很困难,我们使用vcpkg来简化它的编译,方便我们使用。

目录

一、CURL介绍

二、vcpkg下载、编译、定制【curl】

三、编写demo

四、总结


一、CURL介绍

        curl是一个广泛使用的命令行工具和库,用于在计算机网络上进行数据传输和交互,它支持多种协议和数据格式,包括 HTTP、FTP、SMTP、JSON、XML 等,curl 可以发送 HTTP 请求并显示服务器响应的详细信息,也可以下载文件或上传文件到服务器,还可以用于数据抓取、自动化任务和系统管理等场景。curl 支持多种操作系统(如 Windows、Linux、MacOS 等)和编程语言(如 shell、Python、C++ 等),因此被广泛使用于跨平台数据传输和调试。它可以应用在网络调试、文件传输、自动化、网络安全、云计算等领域。

        总之,curl可以用于各种与网络数据传输和管理相关的任务,跨平台性很高,号称地球上最好用网络传输工具。猜猜它为什么叫CURL?因为它全部由C语言构成,并且和URL相关,所以称之为CURL。

        网络调试: curl 可以用来测试网站、API 和其他网络服务的功能和性能。它可以发送 HTTP 请求并显示服务器响应的详细信息,以帮助开发人员诊断和解决问题。

       文件传输:curl 可以从网络上下载文件或上传文件到服务器。这对于备份、共享和传输大型文件非常有用。

       自动化:curl 可以与 shell 脚本、Python 等编程语言结合使用,从而实现自动化任务,如数据抓取、文件传输和系统管理等。

       网络安全:curl 支持各种安全协议和加密算法,包括 SSL、TLS 和 SSH 等。因此,它经常用于安全传输敏感数据和身份验证。

       云计算:curl 可以与各种云计算平台(如 AWS、Azure、Google Cloud 等)结合使用,从而管理云资源、上传/下载数据、执行任务等。

二、vcpkg下载、编译、定制【curl】

        vcpkg为微软开源的包管理工具,如果你还没有配置,请看下面链接:

VCPKG安装和使用教程_早睡的叶子的博客-CSDN博客

Visual Studio开源库集成器Vcpkg全教程--利用Vcpkg轻松集成开源第三方库_visual studio vcpkg_Achilles的博客-CSDN博客

        只需要一个命令即可:

vcpkg install curl[http2]:x64-windows

         这个是下载编译带有http2特性的curl,相应的他需要依赖nghttp2、zlib、openssl,不过你不要担心,它会帮你处理好。等待完成后,你会vcpkg下看到这些:

         1. 其中,downloads里都是下载好的工具包,zip tar居多。

         2. packages里面都是编译好的库:

        3.  installed里面都是抽取的include和lib文件,直接引用这个非常方便。

         支持http2的curl所需的头文件都在这了:

         支持http2的curl所需的静态库lib文件都在这了:

         下一步就是应用lib和include了。

三、编写demo

        将所有lib和include引入:

ws2_32.lib

wldap32.lib
libcurl-d.lib
libcrypto.lib
libssl.lib
nghttp2.lib
zlibd.lib
Crypt32.lib

        在main函数中写入如下代码:

#include <curl/curl.h>
//#include <nghttp2/nghttp2.h>
int main()
{
	CURL* curl = curl_easy_init();
	if (curl)
	{
		curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.com/");
		curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);
		curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
		CURLcode 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);
	}
	return 0;
}

         大功告成:

四、总结

        一般我们需要curl的什么特性就在install的时候在【】里加上什么就可以了,然后注意它编出来的lib和include不要落下了,然后就可以愉快应用其中的特性了。本篇中使用了curl中http2的特性,它可以访问https开头的所有网址,并且可以实现流的通信机制。有什么问题欢迎大家评论在下面。博主祝大家身心愉悦!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/381038.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

代码随想录算法训练营第十五天 | 层序遍历 、226.翻转二叉树、101.对称二叉树

打卡第15天&#xff0c;今天继续二叉树 今日任务 层序遍历10道题226.翻转二叉树101.对称二叉树 层序遍历10道题 题单 102.二叉树的层序遍历107.二叉树的层次遍历II199.二叉树的右视图637.二叉树的层平均值429.N叉树的层序遍历515.在每个树行中找最大值116.填充每个节点的下一个…

工作篇:触摸屏原理介绍

一、触摸屏概述 触摸屏作为一种新的输入设备&#xff0c;它是目前最简单、方便、自然的一种人机交互方式。 当接触了屏幕上的图形按钮时&#xff0c;屏幕上的触觉反馈系统可根据预先编程的程式驱动各种连结装置&#xff0c;可用以取代机械式的按钮面板&#xff0c;并借由液晶…

《PMBOK 指南第七版》初识

个人理解&#xff1a; 体系构建变化非常大&#xff0c;7版延续6版的内容&#xff0c;但对项目管理的视角完全不同&#xff0c;系统化的思考方式10知识领域 到 12管理原则的转变&#xff0c;突出了对变化的敏捷应对&#xff0c;体现管理的有效性5过程域 到 8 绩效域的转变&…

Android源码分析 - InputManagerService与触摸事件

0. 前言 有人问到&#xff1a;“通过TouchEvent&#xff0c;你可以获得到当前的触点&#xff0c;它更新的频率和屏幕刷新的频率一样吗&#xff1f;”。听到这个问题的时候我感到很诧异&#xff0c;我们知道Android是事件驱动机制的设计&#xff0c;可以从多种服务中通过IPC通信…

03 Android基础--fragment

03 Android基础--fragment什么是fragment&#xff1f;fragment生命周期&#xff1f;动态的fragment与静态的fragmentfragment常用的两个类与APIFragment与Activity通信什么是fragment&#xff1f; 碎片&#xff0c;一个activity中可以使用多个fragment&#xff0c;可以把activi…

应用模型开发指南上新介绍

Module、HAP、Ability、AbilitySta-ge、Context……您是否曾经被这些搞不懂又绕不开的知识点困扰&#xff1f; 现在&#xff0c;全新的《应用程序包基础知识》及《应用模型开发指南》为您答疑解惑&#xff01; 这里有您关注的概念解析、原理机制阐述&#xff0c;也有丰富的…

gitlab+idea回退代码并提交到新分支

目录结构前言idea创建新分支查看代码提交记录使用IntelliJ IDEA获取使用Git Bash Here获取代码回退到指定版本回退执行命令行使用IntelliJ IDEA实现使用Git Bash Here实现回退完成验证idea提交指定版本代码验证分支代码推动成功前言 IntelliJ IDEA GitLab开发过程中需将代码回…

ajax调用restful接口

HTTP动词对应操作POST新增信息GET获取信息PUT更新信息DELETE删除信息一、POST-----新增信息 1. 后台接口 PostMapping(value "/save") public String save(RequestBody(required true) Emp emp){System.err.println(emp.toString());// 将数据信息存库empService.…

Android开发面试【金三】——启动优化

前言 一下子来到了&#xff0c;面试的高潮季。金三银四的三月份&#xff1b;在我们Android开发的众多面试中&#xff0c;扑面而来的超多面试题难道很多程序员。 Android的性能优化&#xff0c;主要是从以下几个方面进行优化的&#xff1a; 稳定&#xff08;内存溢出、崩溃&am…

安全认证--JWT介绍及使用

安全认证--JWT介绍及使用1.无状态登录原理1.1.什么是有状态&#xff1f;1.2.什么是无状态1.3.如何实现无状态1.4.JWT1.4.1.简介1.4.2.数据格式2.编写JWT工具2.1.添加JWT依赖2.2.载荷对象2.3.工具2.4.测试2.4.1.配置秘钥2.4.2.测试类2.5项目源码1.无状态登录原理 有状态登录和无…

G1D54-CRF

一、CRF的输入X是什么&#xff1f;是构造的特征吗&#xff1f; 如此&#xff0c;CRF的x只用于状态函数吗&#xff1f; CRF的例子解释调用代码 机器之心 知乎忆榛 此处线性链条件随机场的特征函数形式被统一了&#xff1f; BilstmCRF&#xff0c;强烈推荐&#xff01;&#x…

AM402和SV660N、IS620N运动控制

软件&#xff1a;InoProShop(V1.7.3) 1、添加EtherCAT伺服从站 2、PLC运动控制程序和ETHERCAT在一个任务中。 3、编码器脉冲设置。 注意电机转速值是以秒还是分钟计量单位。 SV660N IS620N 4、设置电机停机方式。使用sin停机效果比较圆滑&#xff0c;默认梯形。 5、库管理器…

广和通携手联发科技正式发布基于MediaTek T830 平台5G模组FG370的可快速落地FWA解决方案

2月28日&#xff0c;全球领先的物联网无线通信解决方案和无线通信模组提供商广和通正式宣布&#xff1a;新一代5G模组FG370已率先实现量产&#xff0c;并于2023世界移动通信大会&#xff08;MWC Barcelona 2023&#xff09;期间携手联发科技正式发布基于FG370的FWA解决方案&…

十三、MyBatis的缓存

缓存&#xff1a;cache 缓存的作用&#xff1a;通过减少IO的方式&#xff0c;来提高程序的执行效率。 mybatis的缓存&#xff1a;将select语句的查询结果放到缓存&#xff08;内存&#xff09;当中&#xff0c;下一次还是这条select语句的话&#xff0c;直接从缓存中取&#xf…

数字信号复习题纲

数字信号复习题纲一、希尔伯特变换器&#xff08;:heavy_check_mark: &#xff09;1. 什么是希尔伯特变换器&#xff1f;2. 试证明信号通过希尔伯特变换器后的输出二、能量信号的自相关函数、卷积运算与能量谱&#xff08;:heavy_check_mark:&#xff09;1. 能量信号2. 试证明自…

webpack配置完全指南

前言 对于入门选手来讲&#xff0c;webpack 配置项很多很重&#xff0c;如何快速配置一个可用于线上环境的 webpack 就是一件值得思考的事情。其实熟悉 webpack 之后会发现很简单&#xff0c;基础的配置可以分为以下几个方面&#xff1a; entry 、 output 、 mode 、 resolve …

深入理解Storm 之 TridentStrom

从Demo讲起: FixedBatchSpout spout new FixedBatchSpout(new Fields("sentence"), 3, new Values("the cow jumped over the moon"),new Values("the man went to the store and bought some candy"),new Values("four score and seven …

新库上线 | CnOpenData中国债券市场债券信息数据

中国债券市场债券信息数据 一、数据简介 债券是政府、企业、银行等债务人为筹集资金&#xff0c;按照法定程序发行并向债权人承诺于指定日期还本付息的有价证券。债券购买者或投资者与发行者之间是一种债权债务关系&#xff0c;债券发行人即债务人&#xff0c;投资者&#xff…

关于 python 的异常使用说明 (python 的文件和异常)

文章目录异常1. 处理异常 ZeroDivisionError 异常2. 使用 try-except 代码块3. 使用异常避免崩溃4. else 代码块5. 处理 FileNotFoundError 异常6. 分析文本7. 失败时一声不吭异常 pyhong 使用被异常成为异常的特殊对象来管理程序执行期间发生的错误。 每当发生让 python 不知所…

【计算机网络:自顶向下方法】Chapter5 网络层:控制平面

本系列文章为笔者在学习b站中科大郑烇老师的计算机网络课程时&#xff08;郑老师讲得很清晰&#xff01;&#xff01;&#xff09;&#xff0c;结合课程PPT与《计算机网络&#xff1a;自顶向下方法》&#xff08;第七版&#xff09;所作的学习笔记&#xff0c;部分图片源自课程…