libcurl库的静态库的编译

本人使用的就是编译的是不包含openssl以及libssh2的

libcurl 默认下并不支持 SFTP ,支持的话需要在编译的时候添加 libssh2 依赖项,
而libssh2 又依赖于 openssl 和 zlib 

下载源码并且编译

这次编译选择的是当前(2023年6月26日)最新版本编译
编译平台: Windows10
IDE:VS2010


1.下载一个 curl的源码库 curl-8.1.2 https://curl.se/download.html

2.在projects文件夹下
找到vc10,打开libcurl工程,因为要生成curl.lib静态库

3.选择配置 LIB Debug  Win32 ,根据你要使用的程序的配置来,如果要编译Release版本的就选择LIBRelease,因为运行时库要用一致的。
 
4.修改一下预定义宏 
    去掉这两个 
    USE_OPENSSL
    USE_LIBSSH2
    
5.点击Build,就编译成功了。


然后找到
curl-8.1.2\build\Win32\VC10\LIB Debug (或者Release下面)
下面就有个编译好的 libcurld.lib 库了。


应用


把这个库应用到你自己的工程中,也是win32 和 Debug的。

1.把之前下载的源码下的include文件夹下的curl下的头文件移动到自己工程下,以及上面生成的lib库

2.在IDE中设置好库目录,输入库名称

3.加上一个宏定义 属性配置中的预处理器
BUILDING_LIBCURL
HTTP_ONLY

4.输入库那里还需要加上其他的(思路是参考源码中的工程中做了什么样的设置)
ws2_32.lib
wldap32.lib

linux下的编译和使用

linux静态编译libcurl出.a文件,连接到自己的项目中 - 知乎

curl的一些其他问题

0)如何使用
C++进行POST请求用法介绍_笔记大全_设计学院C++使用curl发送post请求_c++ curl_Keras深度学习的博客-CSDN博客

1)查看各个路径的时间:
curl -o /dev/null -s -w "time_connect: %{time_connect}\ntime_starttransfer: %{time_starttransfer}\ntime_nslookup:%{time_namelookup}\ntime_total: %{time_total}\n" "xxxx.com"

2)如果curl的时间超过1s,可以看看这个追踪一下哪一步时间久了
strace -tt 查看哪个时间段变长了

如果设置超时时间不生效
可能是域名解析的时候很长

3)
CURLOPT_DNS_USE_GLOBAL_CACHE启用时会启用一个全局的DNS缓存,此项为线程安全的,并且默认启用。
CURLOPT_DNS_CACHE_TIMEOUT设置在内存中保存DNS
系统也可以开启缓存

4)

多线程问题文档

libcurl - programming tutorial

Thread-safe

libcurl使用注意事项(多线程)-阿鸾44-ChinaUnix博客

参考文章

【C++】VS2013下CURL编译及使用示例_51CTO博客_linux编译c++程序

curl_multi异步高并发服务实现 

https://www.cnblogs.com/bclshuai/p/15790038.html

5)

使用了 curl_slist_append 申请了资源

记得使用 curl_slist_free_all 去释放资源

否则会导致 内存泄漏

http测试

https://blog.csdn.net/m0_58656539/article/details/127321217
 

openssl官网:

https://www.openssl.org/source/
直接下载源码编译  

或者 

直接下载安装包安装完之后即可 https://slproweb.com/products/Win32OpenSSL.html

DLL调用

分成静态调用和动态调用
静态调用就是启动的时候就把DLL加载到进程空间中,在链接的时候就做好各种设置。
动态调用就是运行时调用。

https://blog.csdn.net/Sakuya__/article/details/105403172

C++如何引用openssl库调用md5算法。

1.
下载 32位版本的 openssl1.1.1u 不是light的 https://slproweb.com/products/Win32OpenSSL.html
安装好以后里面直接有dll  不用重新编译


2. 把头文件,和lib 静态库文件都拷贝过去
把cypro.lib 都加进去 文件和输入链接配置加上
把cypro.dll 加入到工程中去

https://blog.csdn.net/w1820020635/article/details/88350680?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-5-88350680-blog-128629547.235%5Ev38%5Epc_relevant_sort_base1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-5-88350680-blog-128629547.235%5Ev38%5Epc_relevant_sort_base1&utm_relevant_index=6


 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值