vs2005编译Openssl
Openssl是ssl和tls的开源的免费的实现库。那ssl和tls又是什么呢?
ssl=secure socket layer 安全套接字层
tls=transport layers security 传输层安全
我们的https是怎么来的呢?其实
https = http + ssl
要使用openssl,就要编译它。当然如果你不想自己编译,只想去拿来使用,你也有的选择,给你一个连接,这个连接有人家安装好的库:
http://slproweb.com/products/Win32OpenSSL.html
这个也是openssl官网推荐的下载连接,所以你不用担心它是否有病毒。
其实openssl的工程中包含了怎么编译openssl工程文档,例如关于如何在win32编译,可以参考其中的INSTALL.W32,但是我发现这个文档有个错误,请参看后面的部分。
好了,我们还是自己编译吧。
一 去官网下载openssl工程
官网是
http://www.openssl.org
工程下载地址:
http://www.openssl.org/source/
最新版本:
openssl-1.0.1c.tar.gz
二 解压
三 安装perl
如果你没有安装perl,从下列网站下载,安装:
http://www.activestate.com/activeperl/downloads
四 启动visual studio 2005 command prompt
visual studio 2005 command prompt在开始菜单 -> 程序 -> visual studio 2005 ->visual studio tools
五 配置
下面的命令全部在visual studio 2005 command prompt中执行。
执行:
>perl configure VC-WIN32
注意这里是大写,不要写成小写。否则会出现警告。
另外有些教程,以及openssl工程中INSTALL.W32中提到可以加上–prefix,也就是
>perl configure VC-WIN32 –prefix=c:/openssl/dir
但是,我发现如果加上这个,后面编译就出现包含文件的错误。
六 生成Makefile
执行:
msdo_ms
除了使用do_ms还可以使用下面这2个命令:
msdo_nasm 这个是说明使用nasm来处理汇编部分
msdo_masm 这个是说明使用masm来处理汇编部分
七 编译
nmake -f msntdll.mak
编译完成之后,可以到out32dll这个文件夹看看,是不是生成一堆的dll和exe文件,在你新解压的openssl文件夹下是没有这个文件的。
测试OpenSSL动态库:nmake -f msntdll.mak test
测试OpenSSL静态库:nmake -f msnt.mak test
安装OpenSSL动态库:nmake -f msntdll.mak install
安装OpenSSL静态库:nmake -f msnt.mak install
清除上次OpenSSL动态库的编译,以便重新编译:nmake -f msntdll.mak clean
清除上次OpenSSL静态库的编译,以便重新编译:nmake -f msnt.mak clean
如何使用呢?
在openssl文件下面有inc32文件夹,这个就是头文件,注意不是include,刚开始我也以为是include文件夹,结果编译时候出错了,结果打开的这些文件,里面只是一些奇怪的字符而已。lib和dll文件是在我们刚才提到的out32dll文件夹中。
接下来,我们使用vs2005创建一个控制台空工程,添加一个main.cpp文件,输入下面内容:
#include <iostream> extern "C" { #include "./include/openssl/bio.h" #include "./include/openssl/ssl.h" } #pragma comment( lib, "./lib/libeay32.lib") #pragma comment( lib, "./lib/ssleay32.lib") using namespace std; int main( int argc, char** argv ) { BIO* pBio; pBio = BIO_new_connect("www.google.com:80"); if(pBio == NULL) { cout<<"Failed!"<<endl; return -1; } if(BIO_do_connect(pBio) <= 0) { cout<<"Connection Failed!"<<endl; } else { cout<<"Connection Successful!"<<endl; } return 0; }
记得拷贝libeay32.dll和ssleay32.dll到debug后者release目录下,执行程序。
完
版权所有,禁止转载. 如需转载,请先征得博主的同意,并且表明文章出处,否则按侵权处理.