VS2022编译和使用curl网络库
Step 1,下载源码(curl - Download),下载之后解压(文件夹路径别有中文也不要有空格),我的路径是: D:\dev\net\libcurlDev\res\curl-7.83.1
Step 2,编译。
方法 1,可以使用 cmake直接编译或者用cmake gui生成vs工程再编译。
方法 2,使用 VS 对应平台的 Native Tools Cmd 命令行编译。这里说一下此方法。
A. VS Native Tools Cmd如下图:
B.(可选先执行curl-7.83.1\buildconf.bat)。以x86 Native Tools Command 命令行窗口为例。在这个命令行窗口里先进入到 curl-7.83.1\winbuild\ 目录下,然后执行编译。
编译Debug lib命令:nmake /f Makefile.vc mode=static VC=17 MACHINE=x86 DEBUG=yes
编译Release lib命令:nmake /f Makefile.vc mode=static VC=17 MACHINE=x86 DEBUG=no
mode=static,编译静态库。mode=dll,编译动态库
如下图:
编译好之后如下图:
如果要编译x64版本,需要在 x64 Native Tools Command 命令行窗口中执行命令。并且MACHINE=x64
以静态库的使用为例,使用的时候需要在连接器输入的附加依赖项中加入如下这些lib:
libcurl_a_debug.lib
Ws2_32.lib
Wldap32.lib
winmm.lib
Crypt32.lib
Normaliz.lib
Step 4,测试代码如下:
#define CURL_STATICLIB
#define HTTP_ONLY
/** 加上这两个宏是保证正确编译静态库的代码,防止出现 “LNK2019 无法解析的外部符号 __imp__curl_easy_strerror,函数 _main 中引用了该符号” 这类错误* 也可以在 项目属性 -> C/C++ -> 预处理器 -> 预处理器定义 这里添加进来*/
#include <iostream>
#include <curl/curl.h>
int main()
{std::cout << "Hello curl static lib!\n";CURL* curl = nullptr;CURLcode res;curl = curl_easy_init();if (curl != nullptr) {curl_easy_setopt(curl, CURLOPT_URL, "https://github.com/");/* example.com is redirected, so we tell libcurl to follow redirection */curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L);/* Perform the request, res will get the return code */res = curl_easy_perform(curl);/* Check for errors */if (res != CURLE_OK) {fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));}/* always cleanup */curl_easy_cleanup(curl);}return EXIT_SUCCESS;
}
VS2022编译和使用curl网络库相关推荐
- muduo网络库:18---muduo简介之(muduo库的由来、编译安装、目录结构、代码结构、线程模型)
一.由来 2010年3月陈硕先生写了一篇<学之者生,用之者死--ACE历史与简评>(文章参阅:https://blog.csdn.net/Solstice/article/details/ ...
- 编译curl的动态库以及curl动态库的使用
文章目录 1.编译curl静态库 2.curl动态库的编译 1.直接编译curl源码 2.用户生成自定义curl动态库 2.1.用户根据自己的需要,列出需要使用的接口 2.2 实现上述的接口 2.3 ...
- curl静态库的编译与使用
1.静态库的编译 参考文档: https://www.cnblogs.com/yome/p/5340685.html https://www.cnblogs.com/yome/p/5340685.ht ...
- VS2022编译libpng库
本文将使用VS2022编译libpng,操作系统为Windows10.官网地址:链接 1. 下载源代码 由于 libpng 依赖 zlib ,因此需要下载 libpng 和 zlib 的源代码. li ...
- C++ 第三方常用网络库
From:https://www.cnblogs.com/aitantianderuangutou/p/11416902.html (1) ACE 庞大.复杂,适合大型项目.开源.免费,不依赖第三方库 ...
- 谷歌开源张量网络库TensorNetwork,GPU处理提升100倍!
编译 | 琥珀 出品 | AI科技大本营(ID:rgznai100) 世界上许多最严峻的科学挑战,如开发高温超导体和理解时空的本质,都涉及处理量子系统的复杂性.然而,这些系统中量子态的数量程指数级增 ...
- 开源免费的C/C++网络库(c/c++ sockets library)
(1)ACE 庞大.复杂,适合大型项目.开源.免费,不依赖第三方库,支持跨平台. http://www.cs.wustl.edu/~schmidt/ACE.html (2)Asio Asio基于Boo ...
- Qt,编译libcurl并且导入到库
在MInGW环境下编译和使用libcurl静态库 libcurl 7.21以后的版本在Windows下的编译比较简单,自带了MinGW和VC环境的Makefile文件,首先去Curl官网下载源代码:h ...
- 网易云音乐网络库跨平台化实践
导读: 2021年10月21日,「QCon 全球软件开发大会」在上海举办,网易智企技术 VP 陈功作为出品人发起了「AI 时代下的融合通信技术」专场,邀请到网易云信.网易音视频实验室.网易云音乐的技术 ...
最新文章
- oracle 语句 在线测试,2017年Oracle数据库基础测试答案.doc
- 命令+mybatis-generator插件自己主动生成Mapper映射文件
- python弱类型好处_JavaScript弱类型语言的优缺点有哪些
- user32.dll 函数说明小结
- IOS开发之——屏幕适配-AutoLayout代码实现(03)
- pclint vc2012配置
- Ubuntu卸载Anaconda步骤
- Visual Studio中C++关于Unicode字符集和多字节字符集
- 如何把握银行信息科技风险管理的“度”?
- Win10不相邻的磁盘怎么合并,一学就会
- Unity 鼠标进入UI控件,显示控件名称
- python怎么读音发音英语-django的英文读法是什么
- 视觉SLAM十四讲CH9代码解析及课后习题详解
- Java解决:有一对兔子,从出生后第三个月起每个月都生一对兔子,小兔子长到第三个月的时候又生了了一对兔子。假设兔子都没有死亡,求第二年的总对数 。
- [SPOJ IGAME Interesting Game]Nim 博弈+数位DP
- 开学季好物怎么选,学生党必备的几款好物分享
- 计算机专业海报排版设计,我研究了2000张大神海报,终于总结出这个排版技巧...
- 万字报告拆解:Web3 浪潮风靡,NFT 找到新增长点,AIGC 如火如荼
- .NET基础篇:解决VS2017引用无效问题。
- 修改个人资料和头像的协议数据包