Windows 编译libcurl(openssl+zlib)(使用VC编译)
2017-09-08 19:40
477 查看
libcurl主要功能就是用不同的协议连接和沟通不同的服务器,如果使用HTTPS,需要OpenSSL
libcurl https://curl.haxx.se/download.html 下载Source Archives即可
ActiveState https://www.activestate.com/activeperl/downloads 下载perl解析器,编译openssl需要用到。
openssl https://www.openssl.org/source/ 下载openssl-1.0.2k,1.1.0以后的文件和安装方法都换了。
zlib http://zlib.net/ 下载1.2.7以外的版本,比如1.2.11。
解压
为了方便安装,在D盘根目录下新建一个名为libcurl-ssl的文件夹,将下载的三个压缩包解压到该文件夹。
在 curl-7.54.0 -> lib 下新建文件夹openssl用来存放openssl的头文件。
zlib编译:
zlib-1.2.11\contrib\vstudio\vc14\zlibvc.sln,编译release版本。
在生成的x86\ZlibDllRelease文件夹中有zlibwapi.dll和zlibwapi.lib文件
ActiveState安装:
打开安装包,选择Modify默认安装或Repair修改安装路径都可以
openssl编译:
这是最麻烦、最容易出错的一环了,因为他没有项目文件,只能通过命令行来编译。
在开始菜单中找到vs自带的 VS2015 x86 本机工具命令提示符
使用cd命令进入到openssl-1.0.2k文件夹中
命令行键入 perl Configure VC-WIN32 no-asm
命令行键入 ms\do_ms.bat
命令行键入 nmake -f ms/ntdll.mak
等待差不多五分钟,只要不出现“stop”,安全地执行到结束,就算成功。
一旦中间出了差错,最好是把文件夹也删了,重新解压、配置编译,如果你留有编译失败的半成品,它可能会告诉你“无法解析XXX”。
将 openssl-1.0.2k -> inc32 -> openssl 所有的.h 和 openssl-1.0.2k -> out32dll 的 libeay32.lib、libeay32.dll、ssleay32.lib、ssleay32.dll 一起复制到 curl-7.54.0 -> lib -> openssl 中
libcurl编译:
编译平台选择 DLL Debug - DLL OpenSSL
curl-7.54.0 ->projects -> Windows -> VC14 -> curl-all.sln,可能会提示升级工程,确定即可。
将 libcurl 设为启动项目,选择 libcurl -> Resource Files -> libcurl.rc,右键“移出”,它记录着版本信息,只会增大文件,可以移出掉。
选择 属性 -> C/C++ -> 预处理器 -> 预处理器定义,将"BUILDING_LIBCURL"改成"CURL_STATICLIB"。这样那些接口函数就不会被声明为导出函数了。
选择 属性 -> 链接器 -> 常规 -> 附加库目录 添加 ..\..\..\..\lib\openssl,指向curl-7.54.0 -> lib -> openssl
选择 属性 -> 链接器 -> 输入 -> 附加依赖项 添加 libeay32.lib;ssleay32.lib;ws2_32.lib;wldap32.lib; 前两个是为了OpenSSL,后两个是CURL必须依赖的。
在编译成功后 curl-7.54.0 -> build -> Win32 -> VC14 -> DLL Debug - DLL OpenSSL 文件夹中会生成有 libcurld.dll 和 libcurld.lib(注意名字不是libcurl)。
创建控制台应用程序
例如创建的项目文件夹位于 D: -> LibcurlTest,编译版本为debug X86。
新建 LibcurlTest -> include文件夹,将 curl-7.54.0 -> include 目录下的curl文件夹,复制过去。
新建 LibcurlTest -> lib 文件夹,在lib下新建debug文件夹。将libcurl编译的 libcurld.dll 和 libcurld.lib 复制到debug。
将libcurld.dll和之前OpenSSL生成的 libeay32.dll、ssleay32.dll 各复制一份到项目文件夹下,否则会报错。
选择 配置属性 -> C\C++ -> 预处理器 -> 预处理器定义,添加CURL_STATICLIB。
属性中的 附加包含目录、附加库目录和附加依赖项就在代码中实现。
测试代码
运行结果:在控制台中显示 https://www.baidu.com 网页源码,如果没有OpenSSL的编译和链接,是不能访问https的。但是显示中文部分是乱码,本人水平有限,认为这是C++输出的问题,我将源码保存成txt打开是没问题的。
注:本文整理修改自互联网。
作者:李察丶
链接:http://www.jianshu.com/p/2a92e1f30d0c
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
libcurl https://curl.haxx.se/download.html 下载Source Archives即可
ActiveState https://www.activestate.com/activeperl/downloads 下载perl解析器,编译openssl需要用到。
openssl https://www.openssl.org/source/ 下载openssl-1.0.2k,1.1.0以后的文件和安装方法都换了。
zlib http://zlib.net/ 下载1.2.7以外的版本,比如1.2.11。
解压
为了方便安装,在D盘根目录下新建一个名为libcurl-ssl的文件夹,将下载的三个压缩包解压到该文件夹。
在 curl-7.54.0 -> lib 下新建文件夹openssl用来存放openssl的头文件。
zlib编译:
zlib-1.2.11\contrib\vstudio\vc14\zlibvc.sln,编译release版本。
在生成的x86\ZlibDllRelease文件夹中有zlibwapi.dll和zlibwapi.lib文件
ActiveState安装:
打开安装包,选择Modify默认安装或Repair修改安装路径都可以
openssl编译:
这是最麻烦、最容易出错的一环了,因为他没有项目文件,只能通过命令行来编译。
在开始菜单中找到vs自带的 VS2015 x86 本机工具命令提示符
使用cd命令进入到openssl-1.0.2k文件夹中
命令行键入 perl Configure VC-WIN32 no-asm
命令行键入 ms\do_ms.bat
命令行键入 nmake -f ms/ntdll.mak
等待差不多五分钟,只要不出现“stop”,安全地执行到结束,就算成功。
一旦中间出了差错,最好是把文件夹也删了,重新解压、配置编译,如果你留有编译失败的半成品,它可能会告诉你“无法解析XXX”。
将 openssl-1.0.2k -> inc32 -> openssl 所有的.h 和 openssl-1.0.2k -> out32dll 的 libeay32.lib、libeay32.dll、ssleay32.lib、ssleay32.dll 一起复制到 curl-7.54.0 -> lib -> openssl 中
libcurl编译:
编译平台选择 DLL Debug - DLL OpenSSL
curl-7.54.0 ->projects -> Windows -> VC14 -> curl-all.sln,可能会提示升级工程,确定即可。
将 libcurl 设为启动项目,选择 libcurl -> Resource Files -> libcurl.rc,右键“移出”,它记录着版本信息,只会增大文件,可以移出掉。
选择 属性 -> C/C++ -> 预处理器 -> 预处理器定义,将"BUILDING_LIBCURL"改成"CURL_STATICLIB"。这样那些接口函数就不会被声明为导出函数了。
选择 属性 -> 链接器 -> 常规 -> 附加库目录 添加 ..\..\..\..\lib\openssl,指向curl-7.54.0 -> lib -> openssl
选择 属性 -> 链接器 -> 输入 -> 附加依赖项 添加 libeay32.lib;ssleay32.lib;ws2_32.lib;wldap32.lib; 前两个是为了OpenSSL,后两个是CURL必须依赖的。
在编译成功后 curl-7.54.0 -> build -> Win32 -> VC14 -> DLL Debug - DLL OpenSSL 文件夹中会生成有 libcurld.dll 和 libcurld.lib(注意名字不是libcurl)。
创建控制台应用程序
例如创建的项目文件夹位于 D: -> LibcurlTest,编译版本为debug X86。
新建 LibcurlTest -> include文件夹,将 curl-7.54.0 -> include 目录下的curl文件夹,复制过去。
新建 LibcurlTest -> lib 文件夹,在lib下新建debug文件夹。将libcurl编译的 libcurld.dll 和 libcurld.lib 复制到debug。
将libcurld.dll和之前OpenSSL生成的 libeay32.dll、ssleay32.dll 各复制一份到项目文件夹下,否则会报错。
选择 配置属性 -> C\C++ -> 预处理器 -> 预处理器定义,添加CURL_STATICLIB。
属性中的 附加包含目录、附加库目录和附加依赖项就在代码中实现。
测试代码
#include "stdafx.h" #include "../include/curl/curl.h" #pragma comment(lib,"../lib/debug/libcurld.lib") int main() { CURL *curl; CURLcode res; curl = curl_easy_init(); if (curl) { curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, false); curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, true); curl_easy_setopt(curl, CURLOPT_URL, "https://www.baidu.com"); curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1L); 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); } system("pause"); return 0; }
运行结果:在控制台中显示 https://www.baidu.com 网页源码,如果没有OpenSSL的编译和链接,是不能访问https的。但是显示中文部分是乱码,本人水平有限,认为这是C++输出的问题,我将源码保存成txt打开是没问题的。
注:本文整理修改自互联网。
作者:李察丶
链接:http://www.jianshu.com/p/2a92e1f30d0c
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关文章推荐
- 使用mingw 对libcURL,openSSL,zLib交叉编译
- 使用mingw编译支持openssl 的 libcurl(windows下)
- 在Linux下使用MinGW静态交叉编译带有zlib的libcurl(包括交叉编译openssl,即--cross-compile-prefix=i686-w64-mingw32- mingw)
- 使用mingw 对libcURL,openSSL,zLib交叉编译
- Windows下使用VC++编译GNU科学计算库 GNU Scientific Library(GSL)
- vs2010 libcurl 7.21.3 zlib 1.2.5 openssl 1.0.0c 编译全过程
- Windows下使用VC++编译GNU科学计算库 GNU Scientific Library(GSL)
- Windows环境下使用VS2005编译OpenSSL
- Windows环境下使用VS2005编译OpenSSL
- 在Windows下使用汇编方式编译OpenSSL方法
- OpenSSL在Windows下使用vs2010的编译安装
- windows下使用vc2008编译librtmp
- 在VC中编译和使用OpenSSL
- 在VC中编译和使用OpenSSL
- OpenSSL在Windows下使用vs2010的编译安装
- 在VC中编译和使用OpenSSL
- VC 6.0中编译和使用OpenSSL的过程
- 本文介绍在VC 6.0中编译和使用OpenSSL的过程
- .net实例:在VC中编译和使用OpenSSL
- windows下使用vc2008编译libx264