關於qt5上qt.network.ssl: QSslSocket: cannot call unresolved function TLSv1_1_client_method 問題
這個問題是出現在了程序用到了https的請求,需要用到ssl庫,在QT5.4中已經集成了,但是對應的dll文件沒有在mingw目錄下而已。
一、問題的出現
如果你的代碼中用到了如下幾句:
//Https請求設置
config=httpRequest.sslConfiguration();
config.setPeerVerifyMode(QSslSocket::VerifyNone);
config.setProtocol(QSsl::TlsV1_2OrLater);
那麼,在windows 下 的qtcreator裏面進行編譯,提示如下:
- qt.network.ssl: QSslSocket: cannot resolve TLSv1_1_client_method
- qt.network.ssl: QSslSocket: cannot resolve TLSv1_2_client_method
- qt.network.ssl: QSslSocket: cannot resolve TLSv1_1_server_method
- qt.network.ssl: QSslSocket: cannot resolve TLSv1_2_server_method
- qt.network.ssl: QSslSocket: cannot resolve SSL_select_next_proto
- qt.network.ssl: QSslSocket: cannot resolve SSL_CTX_set_next_proto_select_cb
- qt.network.ssl: QSslSocket: cannot resolve SSL_get0_next_proto_negotiated
二、解決方案
1、進入qtcreator路徑:
我的是: G:\Qt\Qt5.6.3\Tools\QtCreator\bin ,找到 libeay32.dll 和 ssleay32.dll
2、將上述兩個文件,複製到mingw的bin目錄下
我的是:G:\Qt\Qt5.6.3\Tools\mingw492_32\bin
3、重新編譯程序,即可運行