OpenSSL在QT中的使用

嗯,如今须要把OpenSSL集成到QT里面。原本是想直接把Cygwin的动态库和头文件直接拿来用的,没想到连接的时候报了一票错误。那好吧,从新本身build一个,这样来的也干净些。bash

官网上下载源码,根据里面的INSTALL.W32一步步来。首先须要一个Mingw的bash。编译器连接器还有GNU Make都在装QT的时候装好了(没有VS的license,只能选Mingw版本的QT,配置起来也省事,咩哈哈)。函数

Mingw的bash经过MSYS安装,一样是到Mingw的官网上下载。其实这玩意只给咱们安装了一个mingw-get,打开后,我靠,新立得的Deja Vu有木有!选上咱们须要安装的包,等他检查依赖,而后就咯吱咯吱的开始安装了。对了,除了bash,还要选上perl。ui

上个图吧,省得无真相。。。是否是很像新立得!!!spa

而后启动MSYS,复制源码到MSYS的主目录。吐槽下,这里没有Cygwin的/cygdrive,搞的很不方便。debug

解压源码(必需要在bash下用tar解压!),cd到源码目录,而后执行:code

$ ./Configure --prefix=$PWD/dist shared mingw

以后,blog

make depend && make && make install

等待他咯吱咯吱的编译就行了。ssl

编译成功后会在dist目录生成 ".a" 文件和dll,这个就是咱们须要的静态&动态库。get

启动QT creator,新建工程,修改pro文件,添加以下配置:编译器

INCLUDEPATH += X:\Your-open-ssl-code-location\openssl-dist\include\

LIBS    += X:\Your-open-ssl-bin-location\openssl-dist\lib\libssl.dll.a \
           X:\Your-open-ssl-bin-location\openssl-dist\lib\libcrypto.dll.a

而后在code里调用个openssl的函数试下:

#include "mainwindow.h"

#include <openssl/ssl.h>
#include <openssl/err.h>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    SSL_library_init();
    SSL_load_error_strings();
    ssl_ctx = SSL_CTX_new(SSLv23_client_method());
}

CTRL+B编译,应该是一路绿灯的经过~

运行的时候会出现程序意外终止,表惧怕,把“libeay32.dll”和“ssleay32.dll"放到debug目录,注意不是二进制所在的Debug目录,是他的上一层! 这会儿应该就能够没有错误的运行了~

至此,openssl已经成功的集成在了QT中。这个方法比从新编译QT Sdk 快多了有木有~

相关文章
相关标签/搜索