因为须要调用openssl的库.因此须要安装一下.函数
下载ActivePerl 5.10.1.1007(最新的版本或较低的版本也能够):spa
下载地址:http://www.activestate.com/activeperl/downloads/code
下载 openssl-0.9.8m(固然也能够最新的版本)并解压。orm
下载地址: http://www.openssl.org/source/ssl
1) 安装 ActivePerlcmd
2) 下载 openssl,必定要解压缩到C盘根目录,放到其余盘编译会提示找不到头文件.源码
unable to read opensslv.h:No such file or directoryopenssl
搜索一下vs2012的目录,找到nmake.exe,将路径设置到系统的path环境变量里面string
D:\program files (x86)\Microsoft Visual Studio 11.0\VC\bin;加到path里面,由于里面包含了nmake命令it
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编译,全部的变量声明必需要放到函数的前面.
不能功能与变量随便定义.