关于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、重新编译程序,即可运行