最近项目的http服务要转成更加安全的https,发现替换libcurl库还是比较麻烦的,整个过程耗费了几天时间,所以记下笔记,以防将来忘记。
环境:win7 64位 + vs2012
下载 openssl
官网下载后解压,记得添加环境变量
注意:开始下载的openssl-OpenSSL_1_1_0e, ms目录下文件不全,安装老是失败,没办法换的openssl-1.0.2k版本
下载 ActivePerl:
地址:https://www.activestate.com/activeperl/downloads 因为要兼容32位 我下载的x86版本
安装ActivePerl:
直接点击下一步完成即可。
安装dmake:
如果报错sqlite3结构破坏, 删除
C:\Users\%USERNAME%\AppData\Local\ActiveState\ActivePerl 目录下的文件
重新执行,成功
安装nasm:
直接点击下一步完成即可。
编译openssl:
(1)打开vs工具下命令行跳转到openssl目录执行:
perl Configure VC-WIN32 --prefix=H:\test_https
(2)运行nasm编译器
编译动态库:
执行: nmake -f ms\ntdll.mak
执行: nmake -f ms\nt.mak install
编译静态库:
nmake -f ms\nt.mak
nmake -f ms\nt.mak install
这两步编译时间稍长
(3)打开安装目录:
查看编译成功的include 和 lib库(这两个静态库在编译静态版本的时候还要使用)。
(4)打开H:\lh_server\curl-7.49.1\curl-7.49.1\projects\Windows目录,我是vs2012,打开VC11里面的工程
(5)项目导入之前编译的库和include文件目录.
(6)选择自己需要的编译方式编译,得到libcurl.lib和相应的dll文件
(7)拷贝include和生成的库文件到自己的工程.
这里需注意一点:静态库版本,在编译后使用的时候还要将前面编译成功的(libeay32.lib, ssleay32.lib)一并带入新工程引用,在预处理还需加入CURL_STATICLIB,不然会得到一堆无法解析的外部符号的错误,动态库版本不需要,如下图所示