因爲須要調用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編譯,全部的變量聲明必需要放到函數的前面.
不能功能與變量隨便定義.