项目场景:
Qt网络编程请求网址的时候出现:qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed
问题描述
原因分析:
可能是电脑没有安装正确的OpenSSL。
解决方案:
-
首先我们使用下面的代码来判断我们qt支持的OpenSSL版本
#include <QSslSocket> #include <QDebug> qDebug()<< QSslSocket::sslLibraryBuildVersionString();
我的这里输出结果为:
可以看出我的OpenSSL版本位1.1.1。 -
下载OpenSSL对应的版本
在这个网站:http://slproweb.com/products/Win32OpenSSL.html下载对应的OpenSSL版本,有一点要特别说明的是:如果你使用的是Mingw32位kit,下载
反之,如果是Mingw64位kit,则下载Win64 OpenSSL即可。注意两种编译都只用下载Light版本的EXE可执行文件即可。 -
安装OpenSSL
一直点击下一步即可,最后一步将文件夹设置为bin。
-
复制文件
我这里下载的是Win64 版本的OpenSSL。因此将OpenSSL文件夹下的libcrypto-1_1-x64.dll和libssl-1_1-x64.dll文件拷贝到qt的安装目录下,具体目录我这里为:D:\Qt\Qt5.14.0\5.14.0\mingw73_64\bin。如果你下载的是32位,则只需要放到D:\Qt\Qt5.14.0\5.14.0\mingw73_32\bin目录下,其他的也类似。
-
结束
此时再运行工程文件便不会报出qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed这样的错误。
本博客只是为了记录自己学习中遇到的问题。访客如对博客有疑问,欢迎评论区发帖。