最近写个小工具需要依赖openssl的静态lib库,本来是有其它同事编译好的x32和x64版本的lib库,可惜他编译的lib库是用vs2008环境编译的。
我这个新项目使用vs2019开发,所以不能直接引用现有的lib库,只能重新使用vs2019的编译环境再编译一个新的openssl静态库。
首先需要到openssl官网,或者github release页面去下载最新的源码
1)下载openssl源码:
· https://github.com/openssl/openssl/releases
· https://www.openssl.org/source/
下载完后,解压到e:\\openssl目录
2)下载Windows版本的Active Perl环境:
· https://www.activestate.com/products/perl/downloads/
Perl下载完,安装即可
3)打开VS2019自带的开发者命令行工具,一般安装完vs2019,在开始菜单中可以找到
《Developer Command Prompt for VS 2019》这个工具,打开即可!在刚才打开的工具中切换到刚才e:\\openssl目录下,然后开始执行以下3条命令进行编译:
如果只想编译出静态库libcrypto.lib,libssl.lib,则加入命令参数no-sharedperl Configure VC-WIN32 no-asm no-shared
ms\do_ms
nmake -f ms\ntdll.mak具体命令用法,也可以参考openssl源码目录下的INSTALL.W32文件
一些常用参数:
--debug 编译debug版本
VC_WIN32 编译32平台
VC_WIN64A 编译64 arm版
VC_WIN64I 编译64 IA-64版4)编译完成后,使用lib文件
首先需要在项目属性中,添加openssl的头文件目录openssl-1.0.2t\inc32
之后再把刚才生成的lib库文件放到项目根目录下,然后就可以声明并使用lib库中的函数了#include <openssl/rsa.h>
#pragma comment(lib, "libeay32static_vs2019.lib")
需要注意的是,由于编译lib是选择了no-shared静态编译,所以我们的vs项目属性,也需要改成静态的
作者:FFE4