Qt - 安装openssl库
解决:qt.network.ssl: QSslSocket::connectToHostEncrypted: TLS initialization failed
最近使用https给服务器发送请求的时候发现出现了“qt.network.ssl:QSslSocket::connectToHostEncrypted: TLS initialization failed”错误,搞了好久,也算是吃一堑长一智。
使用Qt的network模块的时候,正常情况下没问题,但是如果要使用https的时候,就会用到openssl库,需要使用SSL/TLS加密方式,如果缺少对应的库就会报“qt.network.ssl:QSslSocket::connectToHostEncrypted: TLS initialization failed”错误。
PS:本文解决方案只适用Windows系统
第一步:下载openssl
下载链接:https://slproweb.com/products/Win32OpenSSL.html
进入下载页面后大概是这样的:
不要盲目选择高版本!!!
Qt本身是支持ssl的,但是因为法律原因?没有自带对应的dll。
我们先使用这段代码打印当前Qt支持的ssl版本:
#include <QSslSocket>
#include <QDebug>
qDebug()<< QSslSocket::sslLibraryBuildVersionString();
使用网络需要加上Qt的网络模块,在pro文件里加上:
QT += network
我这里输出的是
那个1.1.1就是你的Qt使用的openssl的版本,在下载页面找到对应的版本,选择你的应用程序的对应位数下载、安装。
安装openssl
安装的时候,我选择的是第二个,这样可以方便的进行dll文件的拷贝。
第二步:拷库
安装完成后在openssl的路径下找到bin目录,拷贝这两个库到你的应用程序执行路径下(或者拷贝到Qt的对应编译路径下,例如msvc2017/bin/,这样之后你所有的Qt类似工程都可以使用SSL/TLS,但是编译打包的时候记得带着这俩库):
拷贝libcrypto-1_1-x64.dll、libssl-1_1-x64.dll文件到工程的exe程序所在路径下。
拷贝完后重新运行程序,至此就可以成功解决“TLS initialization failed”的问题了。
————————————————————————————————
下载openssl项目源码:https://blog.51cto.com/fish/5935049
————————————————————————————————
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理