windows 7 x64安裝openssl,使用vs2012命令nmake編譯

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

    不能功能與變量隨便定義. 

相關文章
相關標籤/搜索