Qt网络编程qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed解决

  • Post author:
  • Post category:其他




项目场景:

Qt网络编程请求网址的时候出现:qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed




问题描述



在这里插入图片描述



原因分析:

可能是电脑没有安装正确的OpenSSL。




解决方案:

  1. 首先我们使用下面的代码来判断我们qt支持的OpenSSL版本

    #include <QSslSocket>
    #include <QDebug>
    qDebug()<< QSslSocket::sslLibraryBuildVersionString();
    
    

    我的这里输出结果为:
    在这里插入图片描述

    可以看出我的OpenSSL版本位1.1.1。

  2. 下载OpenSSL对应的版本

    在这个网站:http://slproweb.com/products/Win32OpenSSL.html下载对应的OpenSSL版本,有一点要特别说明的是:如果你使用的是Mingw32位kit,下载

    在这里插入图片描述

    反之,如果是Mingw64位kit,则下载Win64 OpenSSL即可。注意两种编译都只用下载Light版本的EXE可执行文件即可。

  3. 安装OpenSSL

    一直点击下一步即可,最后一步将文件夹设置为bin。

    在这里插入图片描述

  4. 复制文件

    我这里下载的是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目录下,其他的也类似。

    在这里插入图片描述

  5. 结束

    此时再运行工程文件便不会报出qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed这样的错误。

本博客只是为了记录自己学习中遇到的问题。访客如对博客有疑问,欢迎评论区发帖。



版权声明:本文为qq_41596730原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。