QWebSocket项目OpenSSL部署报错,如何查看Qt Creator使用的OpenSSL依赖?
查看Qt对应OpenSSL依赖及问题修复方案
报错说明
你遇到的SSL缺失报错如下:
qt.network.ssl: No functional TLS backend was found
qt.network.ssl: No TLS backend is available
查看Qt使用的OpenSSL依赖的两种方法
- 方法一:代码直接打印版本信息(最准确)
在项目代码中加入以下调试代码,在Qt Creator正常运行时执行,即可得到当前Qt套件对应的OpenSSL版本信息:
#include <QSslSocket> #include <QDebug> // 放在main函数初始化阶段即可运行 qDebug() << "是否支持SSL:" << QSslSocket::supportsSsl(); qDebug() << "Qt编译时绑定的OpenSSL版本:" << QSslSocket::sslLibraryBuildVersionString(); qDebug() << "运行时实际加载的OpenSSL版本:" << QSslSocket::sslLibraryVersionString();
通过sslLibraryBuildVersionString的输出即可确定你需要的OpenSSL准确版本、位数。
- 方法二:查看TLS后端插件的依赖
找到你项目使用的Qt套件安装路径,进入对应架构的插件目录,例如C:/Qt/6.5.2/msvc2019_64/plugins/tls,找到qopensslbackend.dll文件,使用依赖查看工具(如Dependencies)打开该dll,就能直接看到它依赖的libcrypto、libssl的具体文件名和版本。
部署问题修复方案
你放错版本dll后Qt Creator也无法运行的核心原因是dll版本与Qt套件要求不匹配,按以下步骤操作即可修复:
- 先通过上面的方法确认你需要的OpenSSL版本,是1.1.x系列还是3.x系列,32位还是64位,下载对应版本的dll放到exe同级目录,不要乱下不匹配的版本
- 部署时除了OpenSSL的两个dll,还要把Qt套件目录下的
tls整个文件夹复制到exe同级目录,Qt的TLS后端插件是必须部署的组件,只放OpenSSL dll无法生效 - 不要把多个版本的OpenSSL路径同时加到系统环境变量,避免加载优先级冲突导致加载错版本dll
内容的提问来源于stack exchange,提问作者black_gay
相关产品推荐
相关产品推荐

