1、安装
(1)安装vs2017
(2)安装perl
*一般这两步不会出错
(3)编译openssl
使用的是openssl1.0.2n版本,使用openssl1.0.1版本时出错未找到原因,换到1.0.2版本成功编译。
*解压时需要用管理员身份解压
①打开cmd,运行vcvars32.bat(设置编译环境为32位,生成32位的库)
cd \Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build
vcvars32.bat
运行显示
[vcvarsall.bat] Environment initialized for: ‘x86’
*这一步可直接打开适用于VS2017的x86本机工具命令提示符,都是设定编译环境。
②编译动、静态库(查看INSTALL.W32文件)
转至openssl根目录下:
cd \deps\openssl
配置:
perl Configure VC-WIN32 no-asm --prefix=c:/deps/openssl
ms\do_ms
no-asm表示不用汇编,–prefix=设置 lib include bin 目录的路径
动态库编译:
nmake -f ms\ntdll.mak
nmake -f ms\ntdll.mak test
nmake -f ms\ntdll.mak install
test后会显示通不通过,第一步生成文件夹out32dll和tmp32dll
静态库编译:
nmake -f ms\nt.mak
nmake -f ms\nt.mak test
nmake -f ms\nt.mak install
第一步生成文件夹out32和tmp32
③安装时遇到问题:
.\ssl\bad_dtls_test.c: error C2220: 警告被视为错误 - 没有生成“object”文件
.\ssl\bad_dtls_test.c: warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
NMAKE : fatal error U1077: ““C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\bin\HostX86\x86\cl.EXE””: 返回代码“0x2”
Stop.
搜索找到解决办法:
找到ms文件夹下nt.mak\ntdll.mak文件中的CFLAG,将 -W3改为 -W0,或者直接将其删除,目的是降低其警告级别。
在下一次编译之前要清除上次的编译遗留,即若出现问题,要先
nmake -f ms\nt.mak clean
或
nmake -f ms\ntdll.mak clean
再重新编译。
2、配置
(1)右击Project属性:
——C/C++——常规——附加包含目录:添加C:\deps\openssl\include(头文件路径)
——链接器——常规——附加库目录:添加:C:\deps\openssl\out32dll(lib路径)
——链接器——输入——附加依赖项:添加libeay32.lib、ssleay32.lib(lib库)
(2)将libeay32.lib、ssleay32.lib复制到==.cpp==文件所在文件夹下
(3)配置中遇到的问题:
①提示函数不安全
`‘scanf’: This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
可以按照要求修改函数,也可以在==#include<>==之前添加
#define _CRT_SECURE_NO_WARNINGS
②提示无法查找或打开文件,例如
“Project1.exe”(Win32): 已加载“C:\Windows\SysWOW64\ntdll.dll”。无法查找或打开 PDB 文件。
通过查找资料,设置如下:
工具——选项——调试——常规:勾选 启动源服务器支持
工具——选项——调试——符号:勾选 Microsoft 符号服务器
运行即可解决。可以在运行完之后取消勾选。
③控制台闪退
右击project属性:
——链接器——系统——子系统:选择 控制台 (/SUBSYSTEM:CONSOLE)