使用CURLOPT_NOSIGNAL后必须启用异步DNS,因此需要重新编译libcurl,使其支持c-ares。
curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1L);//禁用掉alarm信号,防止多线程中使用超时崩溃 curl_easy_setopt(curl, CURLOPT_FORBID_REUSE, 1L); //禁掉alarm后会有大量CLOSE_WAIT
-------------------------------------------
下面自己编译libcurl支持c-ares
下载c-ares:
http://c-ares.haxx.se/download/c-ares-1.10.0.tar.gz
解压后用VS2010打开c-ares-1.10.0\vc\vc6aws.dsw
编译dll,生成release版cares.dll和cares.lib
编译openssl和zlib(略过,之前我们已经编译过啦)
编译libcurl
进入curl-7.26.0\winbuild文件夹。
新建一个build_release.bat文件,内容如下:
set INCLUDE=%INCLUDE%;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\include\ set LIB=%LIB%;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\ nmake /f makefile.vc mode=dll DEBUG=no VC=10 WITH_SSL=dll WITH_ZLIB=dll USE_IDN=no USE_SSSPI=yes USE_IPV6=yes GEN_PDB=yes
注:我的操作系统是windows 7 x64并且安装了win8 sdk,因此在cmd命令中改写include和lib。
保存它。
在curl-7.26.0同级目录建立一个deps文件夹,并且在它下面再建立lib、include、bin三个文件夹。
把openssl和zlib以及c-cares的头文件和库复制到它们下面。目录结构如下:
├─bin (8 files) │ cares.dll │ cares.pdb │ caresd.dll │ libeay32.dll │ libeay32.pdb │ ssleay32.dll │ ssleay32.pdb │ zlib1.dll ├─include (22 files) │ ares.h │ ares_build.h │ ares_data.h │ ares_dns.h │ ares_getenv.h │ ares_getopt.h │ ares_inet_net_pton.h │ ares_iphlpapi.h │ ares_ipv6.h │ ares_library_init.h │ ares_llist.h │ ares_nowarn.h │ ares_platform.h │ ares_private.h │ ares_rules.h │ ares_setup.h │ ares_strcasecmp.h │ ares_strdup.h │ ares_version.h │ ares_writev.h │ zconf.h │ zlib.h │─openssl (这个目录是复制openssl-1.0.0c\inc32下面的openssl文件夹) └─lib (7 files) cares.lib caresd.lib ibcares.lib libcaresd.lib libeay32.lib ssleay32.lib zlib.lib
打开MakefileBuild.vc 大约98行
SSL_LIBS = libeay32.lib ssleay32.lib caresd.lib #caresd.lib是我们新添加的dll版c-ares
打开curl-7.26.0\lib\config-win32.h 大约613行
/* #define USE_ARES 1 */ 去掉这一行的注释,并且注释掉后面的 #define USE_THREADS_WIN32 1
打开vs2010命令提示符
执行build_release.bat文件,OK等一会儿就看到
curl-7.26.0\builds\libcurl-release-dll-ssl-dll-zlib--sspi文件夹生成了,里面有我们需要的libcurl版本。
相关推荐
curl7.65.3 带https win32 c++开发库 包含include lib bin文件夹,默认的curl是不带https的,所以编译一个带https方便大家使用
libcurl库 libcurl-7.19.3-win32-ssl-msvc
libcurl-vc15-x86-release-static-ssl-static-zlib-static-ipv6-sspi,该支持的全部都支持了,最新版,正使用中!回馈csdn!
这个版本虽然低一点但是适用于windows系统 利用它可以做SSL HTTPS链接 适用C++ 这个版本虽然低一点但是适用于windows系统 利用它可以做SSL HTTPS链接 适用C++
curl 7.66.0 静态库,win10 vs2019,32位,编译。可直接引用。
linux环境下编译移植libcurl库支持https帮助文档,可查看当前编译的功能是否成功
libcurl-7.29 rpm packagelibcurl-7.29 rpm packagelibcurl-7.29 rpm packagelibcurl-7.29 rpm packagelibcurl-7.29 rpm packagelibcurl-7.29 rpm package
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装
官方离线安装包,亲测可用
libcurl vc16 x64 release static ssp
适用于centos 7
这是由 VS 2013 编译的 libcurl 库, 含有 lib 和 dll 和 .h 头文件可直接使用, 版本为: libcurl/7.46.0 OpenSSL/1.0.2e zlib/1.2.8 另外 gzip 库和 OPen SSL 库都可以单独使用. 附加 libcurl 调用实例一个!
libcurl for Android,支持ssl,使用cyassl编译,非常小,附带一个下载文件的示例
直接可以拿来用的curl-7.56.0 库,编译好的Windows环境库。使用的VS2015开发环境。包含头文件和libcurl.dll,
c++应用curl lib是下载引用这个库。
vs2015 x86 libcurl 支持ssl zlib 注意如果项目需要使用静态的Liburl库时,需要在编译项目时加上宏 CURL_STATICLIB(工程任意地方加上#define CURL_STATICLIB 即可),否则会在链接的过程中报错
网上找了好久,这个是亲自测试可用,liburl支持https
c++中 libcurl 库,包括lib,dll。支持ssl, 支持发送https协议,nasm编译,源代码curl-7.55.1,x64系统。亲测可用。困扰了几天的问题,之前在CSDN上下载的版本可能不对不能用。
摘要视图订阅B_H_L的专栏登录 | 注册726073次第1679名53篇331篇0篇61条13.void *func_download_file(FILE *