安装ActivePerl

 

这个没什么好说的,直接运行msi即可。

编译OpenSSL

1.使用Visual Studio Tool中的“VS2013 x64 本机工具命令提示”来打开控制台;也可以打开一个控制台,然后进到“安装路径\Microsoft Visual Studio 12.0\VC\bin\amd64\“中运行vcvars64.bat;

2.解压下载下来的openssl的压缩包,进入解压文件夹,输入命令:perl Configure VC-WIN64A;

3.输入命令ms\do_win64a;

4.输入命令nmake -f ms\nt.mak开始编译,如需要dll则命令为nmake -f ms\ntdll.mak(如果前面没有配置好发现使用了32bit的nmake,可使用绝对路径使用“安装路径\Microsoft Visual Studio 12.0\VC\bin\amd64\nmake.exe”);

5.如编译成功,可使用nmake -f ms\nt.mak test来测试。

PS:如果需要编译32bit的,第一步使用x86的控制台,二三步中改为VC-WIN32和ms\do_ms。

配置VS

1.项目->属性->配置属性->VC++ 目录->包含目录,将openssl文件夹的inc32添加进去;项目->属性->配置属性->VC++目录->库目录,添加openssl文件夹下的out32dll;

2.项目->属性->配置属性->链接器->输入->附加依赖项,增加libeay32.lib和ssleay32.lib;

3.将out32dll中的libeay32.dll和ssleay32.dll拷贝至工程目录下。

 

编译当中遇到的错误和解决办法

 

OpenSSL编译的时候提示少了strings.h头文件

修改这个文件

crypto/o_str.c

 

#if !defined(OPENSSL_IMPLEMENTS_strncasecmp) && \

!defined(OPENSSL_SYSNAME_WIN32) && \

!defined(NETWARE_CLIB)

# include <strings.h>

#endif

 

这个编译开关定义了就可以了

定义的方法在nt.mak 这个文件中的CFLAG 将-DOPENSSL_SYSNAME_WIN32 -DWIN32_LEAN_AND_MEAN 

这两个宏加进去

 

还有一个重复定义的问题,这样也可以一并解决

链接错误

 


link /nologo /subsystem:console /opt:ref /debug /dll /out:out32dll\libea


y32.dll /def:ms/LIBEAY32.def @C:\Users\Unst\AppData\Local\Temp\nm75AD.tmp


bn-586.obj : error LNK2005: _bn_sub_part_words 已经在 bn_mul.obj 中定义


正在创建库 out32dll\libeay32.lib 和对象 out32dll\libeay32.exp


mem.obj : error LNK2001: 无法解析的外部符号 _cleanse_ctr


mem.obj : error LNK2001: 无法解析的外部符号 _cleanse_ctr


out32dll\libeay32.dll : fatal error LNK1120: 1 个无法解析的外部命令


NMAKE : fatal error U1077: “"D:\Program Files\Microsoft Visual Studio 10.0\VC\B


IN\link.EXE"”: 返回代码“0x460”


Stop.


原因:之前因为没有注意输入命令的大小写,影响了后面的编译。


办法:删了OpenSSL目录,再来一遍。