OpenSSL在QT中的使用


嗯,現在需要把OpenSSL集成到QT里面。本來是想直接把Cygwin的動態庫和頭文件直接拿來用的,沒想到鏈接的時候報了一票錯誤。那好吧,重新自己build一個,這樣來的也干凈些。

官網上下載源碼,根據里面的INSTALL.W32一步步來。首先需要一個Mingw的bash。編譯器鏈接器還有GNU Make都在裝QT的時候裝好了(沒有VS的license,只能選Mingw版本的QT,配置起來也省事,咩哈哈)。

Mingw的bash通過MSYS安裝,同樣是到Mingw的官網上下載。其實這玩意只給我們安裝了一個mingw-get,打開后,我靠,新立得的Deja Vu有木有!選上我們需要安裝的包,等他檢查依賴,然后就咯吱咯吱的開始安裝了。對了,除了bash,還要選上perl。

上個圖吧,免得無真相。。。是不是很像新立得!!!

然后啟動MSYS,復制源碼到MSYS的主目錄。吐槽下,這里沒有Cygwin的/cygdrive,搞的很不方便。

解壓源碼(必須要在bash下用tar解壓!),cd到源碼目錄,然后執行:

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

之后,

make depend && make && make install

等待他咯吱咯吱的編譯就好了。

編譯成功后會在dist目錄生成 ".a" 文件和dll,這個就是我們需要的靜態&動態庫。

啟動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 快多了有木有~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM