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

  1. 下载并安装 Visual Studio(以 VS 2015 为例)。

  2. 下载并安装 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 安装成功:

    这里写图片描述

  3. 下载并安装 Nasm 汇编器,并将 D:\Program Files\NASM 添加到系统环境变量 Path 中。 
    下载地址:http://www.nasm.us/ 
    我下载的是:nasm-2.13.01-installer-x64.exe

  4. 下载并安装 OpenSSL 
    下载地址:http://www.openssl.org/ 
    我下载的是:openssl-1.0.2m.tar.gz

    完成上述所有步骤,将 OpenSSL 包解压至 E:\openssl-1.0.2m,便可以进行编译了。

    注意: 解压后的目录中有两个文件 - INSTALL.W32、INSTALL.W64,包含了 OpenSSL 的各个编译步骤。

编译步骤

  1. 打开命令提示符,定位至 E:\openssl-1.0.2m

    这里写图片描述

  2. 输入 perl Configure VC-WIN32 --prefix=E:\OpenSSL(将其安装到 E:\OpenSSL):

    这里写图片描述

  3. 输入 ms\do_nasm

    这里写图片描述

  4. 将命令提示符定位至 D:\Program Files\Microsoft Visual Studio 14.0\VC\bin, 然后输入vcvars32.bat

    这里写图片描述

    如果没有这一步,会提示 nmake 不是内部或外部命令等一系列错误。

  5. 再次将命令提示符定位至 E:\openssl-1.0.2m,然后输入 nmake -f ms\nt.mak

    这里写图片描述

    完成之后,会在 openssl-1.0.2m 目录下生成一个名为 out32 的文件夹,里面包含了生成的文件:

  6. 输入 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 文件夹下包含相应的汇编文件。

猜你喜欢

转载自blog.csdn.net/qq_34326603/article/details/80937857