windows 7 x64安装openssl,使用vs2012命令nmake编译

由于需要调用openssl的库.所以需要安装一下.

下载ActivePerl  5.10.1.1007(最新的版本或较低的版本也可以):

下载地址:http://www.activestate.com/activeperl/downloads/

下载 openssl-0.9.8m(当然也可以最新的版本)并解压。

下载地址: http://www.openssl.org/source/

1)  安装 ActivePerl

2) 下载 openssl,一定要解压缩到C盘根目录,放到其他盘编译会提示找不到头文件.

    unable to read opensslv.h:No such file or directory

搜索一下vs2012的目录,找到nmake.exe,将路径设置到系统的path环境变量里面

D:\program files (x86)\Microsoft Visual Studio 11.0\VC\bin;加到path里面,因为里面包含了nmake命令

3) 进入到C:\openssl\目录

   3.0) 打开一个cmd窗口,执行以下5步(注意不要切换窗口,特别是3.4)

   3.1 ) 执行 perl Configure VC-WIN32  如果不在C盘,会提示找不到头文件(没错,是VC-WIN32)

   3.2) 执行 ms\do_masm

   3.3) 执行 ms\do_nasm

  3.4) 找到vs2012自带的vsvar32.bat,不同版本的vs可能路径不同,自己搜以下vsvar32.bat在哪个目录下

          执行"D:\program files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\vsvars32.bat"

   3.5) 最后一步,执行 nmake -f ms\ntdll.mak

          备注:如果忽略3.4步,则会提示 用nmake 编译出现错误   “cl.EXE: 返回代码 0xc0000135”

4) 终于编译成功了.

    可以查看目录  openssl-0.9.8zh\out32dll 来确认是否生成了 dll


建立工程

打开vsxxxx,

在additionalinclude directories加上

找到openssl的include路径

"C:\openssl-0.9.8g\include"

这个目录.

 

在additionallibrary directories加上

找到 openssl的out32.dll的路径,每个环境的具体路径具体设置

"C:\openssl-0.9.8g\out32dll"

这个目录


C++代码

#include<stdio.h>  
#include<stdlib.h>  
#include<string.h>  
#include<time.h>  
#include<openssl/bn.h>  
#include<openssl/ec.h>  
#include<openssl/rand.h>  
#include<openssl/err.h>  
#include<openssl/ecdsa.h>  
#include<openssl/ecdh.h>  
#include"sm2.h"  
   
#pragmacomment(lib,"libeay32.lib")

以上是参考其他人的文章汇总的


其他地方需要注意的:

1) 版本使用 openssl-0.9.8g 

   如果使用最新的版本,编译完之后,可能include目录不存在openssl的头文件,那就郁闷了

2) 需要安装 NASM-2.07-installer.rar ( 这里版本我不太确定,使用这个就正常了 )

   安装完之后,需要把安装目录设置到环境变量里面

   复制文件 nasm.exe 为 nasmw.exe 在nasm的安装目录操作,

   因为后面nmake需要使用nasmw命令

3) 编译 nmake -f ms\ntdll.mak

   需要重新打开cmd窗口,才能找到nasmw的命令

   执行:  "D:\program files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\vsvars32.bat"

   编译:  nmake -f ms\ntdll.mak

最后才能编译成功,并且能找到对应的openssl的头文件

4)  项目源码需要包含include目录,依赖库需要包含out32dll目录 

5)  编译代码需要添加  

#pragmacomment(lib,"libeay32.lib")

6) 关于C的变量命名,使用VC编译,所有的变量声明必须要放到函数的前面.

    不能功能与变量随便定义. 


你可能感兴趣的:(windows 7 x64安装openssl,使用vs2012命令nmake编译)