1. 程式人生 > >windows 為qt5.7.1 安裝openssl

windows 為qt5.7.1 安裝openssl

本人使用qt5.7.1+msvc2015寫一個https的客戶端程式,但是用到解析https協議時,報出如下錯誤

qt.network.ssl: QSslSocket: cannot call unresolved function SSLv23_client_method qt.network.ssl: QSslSocket: cannot call unresolved function SSL_CTX_new qt.network.ssl: QSslSocket: cannot call unresolved function SSL_library_init qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error


後來發現是,系統中沒有openssl導致。
openssl 大部分為下載原始碼自己編譯,然後呼叫dll庫,也有exe安裝版本,但是網站要錢
原始碼地址:https://www.openssl.org/
安裝版軟體地址:http://slproweb.com/products/Win32OpenSSL.html

我使用的是這個版本:https://www.openssl.org/source/openssl-1.0.2m.tar.gz
按照以下部落格說明安裝完成:https://blog.csdn.net/liang19890820/article/details/51658574
csdn部落格上所說,大部分都對。
只是我nmake命令的時候,一直缺少h檔案,知道是環境變數的問題,本來想通過將h檔案拷貝到此目錄下解決,但估計lib環境也沒有,這麼做麻煩,遂放棄
後來通過使用vs2015 自帶的命令提示符cmd軟體,在這裡執行能夠繼承vs的所有環境


接下來將openssl安裝目錄中的bin下:libeay32.dll ssleay32.dll 拷貝到qt目錄中有Qt5Network.dll & Qt5Networkd.dll 目錄中即可
(我實際拷貝的是:bin/libeay32.dll, bin/ssleay32.dll lib/libeay.lib lib/ssyeay.lib)沒試驗過不帶lib是否可行

最後值得一說的是,qt5.7.1中是自帶 libeay32.dll &ssleay32.dll 的 在目錄:C:\Qt\Qt5.7.1\Tools\QtCreator\bin
但我將這兩個dll拷貝到Qt5Network.dll目錄下時,無法工作,所以我時預設的“自帶的不工作ssl庫不工作”這一結論的。