windows 下使用 libcurl + openssl --》 折腾一整天的成果
用途
在windows下发送http请求,c++; 需要使用libcurl库,其中涉及到HMAC,MD5,还需要用到openssl库;
之前linux下使用过,分别下载libcurl + opensll的源码,静态编译,最后需要用到 libcurl.a 和 libcrypto.a libssl.a
而在windows下,最后需要用到的静态库分别是 libcurl.lib 和 libeay32.lib ,ssleay32.lib,后两个是openssl的,就这里把我给坑了一把,搞了一整天才搞定,两个平台下库的名字居然都不一样,而且curl可以直接使用vs打开编译,而openssl只能使用namke命令行来编译,这他妹的坑人;
libcurl--》
1.下载
生成的文件,在build底下,找到拷贝到目标工程下使用即可
如果libcurl 还有不识别的链接符号,基本就是下边这俩lib库的问题
openssl -->
libcurl 比较简单,openssl就比较麻烦了
下边这些内容是从别的大佬哪里,转载过来的
环境准备 --》 需要perl + nasm
下载并安装 Visual Studio(以 VS 2015 为例)。
-
下载并安装 ActivePerl。
下载地址:http://www.activestate.com/activeperl/downloads
我下载的是:ActivePerl-5.26.0.2600-MSWin32-x64-403866.exe打开命令提示符,定位到
D:\Program Files\Perl\eg
目录,执行perl example.pl
,若提示Hello from ActivePerl!
则说明 Perl 安装成功: 下载并安装 Nasm 汇编器,并将
D:\Program Files\NASM
添加到系统环境变量 Path 中。
下载地址:http://www.nasm.us/
我下载的是:nasm-2.13.01-installer-x64.exe-
下载并安装 OpenSSL
下载地址:http://www.openssl.org/
我下载的是:openssl-1.0.2m.tar.gz完成上述所有步骤,将 OpenSSL 包解压至
E:\openssl-1.0.2m
,便可以进行编译了。注意: 解压后的目录中有两个文件 - INSTALL.W32、INSTALL.W64,包含了 OpenSSL 的各个编译步骤。
编译步骤
-
打开命令提示符,定位至
E:\openssl-1.0.2m
: -
输入
perl Configure VC-WIN32 --prefix=E:\OpenSSL
(将其安装到E:\OpenSSL
): -
输入
ms\do_nasm
: -
将命令提示符定位至
D:\Program Files\Microsoft Visual Studio 14.0\VC\bin
, 然后输入vcvars32.bat
:如果没有这一步,会提示 nmake 不是内部或外部命令等一系列错误。
-
再次将命令提示符定位至
E:\openssl-1.0.2m
,然后输入nmake -f ms\nt.mak
:完成之后,会在
openssl-1.0.2m
目录下生成一个名为 out32 的文件夹,里面包含了生成的文件: -
输入
nmake -f ms\nt.mak install
: 目的是将生成的库,拷贝到第一步设置的路径E:\OpenSSL下完成之后,会在
E:\OpenSSL
目录下生成 bin、include、lib、ssl 四个文件夹:
注意:
- 以上编译的是 release 版本,若要编译 debug 版,将上述第 2 步中的
VC-WIN32
改成debug-VC-WIN32
即可。 - 若要编译动态库,则用
ms\ntdll.mak
替换掉上面用到的ms\nt.mak
即可。 - 若要生成不带汇编支持的库,则需将上述第 2、3 步用
perl Configure VC-WIN32 no-asm --prefix=E:\OpenSSL
和ms\do_ms
替换。 - 在
E:\openssl-1.0.2m\tmp32dll
文件夹下包含相应的汇编文件。