本篇介绍在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开头的所有网址,并且可以实现流的通信机制。有什么问题欢迎大家评论在下面。博主祝大家身心愉悦!!!