嗯,如今須要把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 快多了有木有~