qt.tlsbackend.ossl: Failed to load libssl/libcrypto.

我的环境是windows,QT6.3.2(msvc2019_64/mingw_64)

出错原因

        QT没有正确加载OpenSSL。

解决过程

1、确保安装的有openssl。

  文章结尾有个注意,是其他方式安装过openssl,环境变量有,但是QT找不到的问题。

      在我这次使用的时候,没有单独去安装OpenSSL,因为我在QT的下面路径找到了需要的库。

                

        我不太确定这是我安装QT时特意选的,还是默认就有,反正如果没有,尽量到官网下载,因为结尾的注意会讨论这个事。

2、解决方法

方法一:

        把上述文件复制到你所使用版本QT的下面路径下:

        注意你使用的是mingw_64就往这复制,使用的msvc2019就往对应的文件夹复制

复制完应该就可以用了。

方法二:

        将上面找的的文件所在地址添加到环境变量

注意添加完,需要确定环境变量,然后重新启动QTcreator才能生效。

不要急,等一下下,不行再重启试试。

我下面是删掉环境变量的实验结果,(实验代码在下面),左边是打开马上运行的结果,他找到了!!!但是环境变量被我删了!!!不应该找到啊!!!

我差点以为写这么半天做了无用功,结果我看了一下他项目里用到的环境变量,并没有啊,然后我又运行了一下, 他又没找到,而且自己单开了一个输出页面,不理解。反正结果是对的。

验证是否成功

#include <QSslSocket>
#include <QDebug>int main() {qDebug() << "OpenSSL supported:" << QSslSocket::supportsSsl();qDebug() << "OpenSSL runtime version:" << QSslSocket::sslLibraryVersionString();return 0;
}

直接把上面这段放在main.cpp运行。

注意上述结果虽然写了个true,但是没成功调用OpenSSL,而是调用Channel。我这个true是因为写教程的时候环境改了又改,有点混乱了,如果没有使用什么办法的话,它可能显示false,不影响,反正后面显示的实际使用了Secure Channel, Windows。

Qt 默认优先使用 OpenSSL 来处理 HTTPS 请求。如果无法加载 OpenSSL 的动态库(libssl.dll 和 libcrypto.dll),Qt 会尝试使用其他可用的 TLS 后端(如 Windows 的 SChannel 或 macOS 的 SecureTransport)。

其实如果你不介意使用 Windows 的 SChannel 而不是 OpenSSL,并且程序运行正常,可以选择忽略这条警告信息。

我一开始就是不懂,看起来好像功能实现了,但是它在最开始报了这个警告。就是下面这样。

这就是使用SChannel实现了功能。

如果环境弄成功了,应该是下面的结果:

如果上面的方法没有成功,可能是OpenSSL版本问题,可能与QT不对应,自行百度下。

遇到的一个问题

注意:遇到另一个问题就是我最初发现我的电脑里有OpenSSL,并且添加了环境变量,但是无法使用。

在终端输入命令openssl version获得的openssl不一定可用

上述是我在我电脑里找到的,一开始以为有,能够用命令搜到其实应该是添加了环境变量,我一开始没反应过来,又手动添加了一次,发现不能用。根据文件夹名称可以看到,我是安装strawberry的时候带的,我其实都忘了这个strawberry拿来干啥的了。。。 

一开始以为是因为他是.exe执行文件所以不行,但是打开目录发现他有那两个动态库:

 而且都是x64的,注意这个也是个点,没有x64就代表是32位的,至于是不是所有版本QT都是用64位的,这需要自己去找了。

一开始我以为通过其他东西附带的这种方式下载的不全,用不了。

后面我思考了一下,应该是版本不行的问题。

真正要注意的来了:

想着送佛送到西,为了验证是不是版本问题,结果整出很多事。

结论:

        1、QTcreator里面找到的高版本就按前面说的来,就没问题,理论官网下的应该也没问题。

        2、重点是后面分析的strawberry问题,strawberry里的那2个库文件名字中带了2横杠,把strawberry里的2个文件的最后的2个横杠删掉复制到方法一的位置(例:F:\Qt\6.3.2\mingw_64\bin),注意strawberry文件里的文件名不变。或者是strawberry文件里那2个文件删掉2横杆,复制给方法一里面的不删。反正就是strawberry文件夹里和(例:F:\Qt\6.3.2\mingw_64\bin)里,一个带横杠一个不带,但必须2个都有,很怪,但确实是这样。反正这样弄完他确实是strawberry里面的版本。。。。。。要用这个方法的,就是电脑里其他什么东西下载过openssl的,建议选择在(例:F:\Qt\6.3.2\xxxx_64\bin)里面修改文件名,原路径不动,避免影响其他程序。还有试了这个复制文件的方法与环境变量无关。

         3、就是建议QT里面没有openssl库的,去官网重新下吧,虽然我无意找到了其他地方存在openssl库,然后能让QT使用的方法,但是会改文件名,不太清楚会对原本的程序有什么影响,所以我最后就没去动strawberry,还是使用的QT里面找到的版本。

下面是部分心路历程,本来是要写过程的,结果越来越匪夷所思,懒得写了。

上面不是提到我安strawberry里面顺带安装了openssl吗,但是不能用。我把他们复制到QT里去试一下,不用环境变量的方式。还好我为了严谨,把VC和GW文件夹都试一遍,VC复制完,运行不成功,结果复制到GW的时候我复制错地方,复制到QTcreator下面,就是找到能用open SSL动态库的地方,我一下警觉,他没有给我报重复文件的提示,我再想是不是之前被我剪切了,结果没有,然后我仔细对比了文件名,,,strawberry里的多了2个横杠,因为安装straw时他自己添加过环境,所以我把名字里的横杠去掉后,直接运行验证代码:

 到这以为成功了,结束了,结果才是诡异的开始,太复杂,懒得写了。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/79992.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】用户权限

shell命令 1. Linux本质上是一个操作系统&#xff0c;但是一般的用户不能直接使用它&#xff0c;而是需要通过外壳程序shell&#xff0c;来与Linux内核进行沟通。 2. shell的简单定义&#xff1a;命令行解释器。主要包含以下作用&#xff1a; 将使用者的命令翻译给核心处理。将…

赛灵思 XC7K325T-2FFG900I FPGA Xilinx Kintex‑7

XC7K325T-2FFG900I 是 Xilinx Kintex‑7 系列中一款工业级 (I) 高性能 FPGA&#xff0c;基于 28 nm HKMG HPL 工艺制程&#xff0c;核心电压标称 1.0 V&#xff0c;I/O 电压可在 0.97 V–1.03 V 之间灵活配置&#xff0c;并可在 –40 C 至 100 C 温度范围内稳定运行。该器件提供…

【题解-Acwing】847. 图中点的层次

题目:847. 图中点的层次 题目描述 给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环。 所有边的长度都是 1,点的编号为 1∼n。 请你求出 1 号点到 n 号点的最短距离,如果从 1 号点无法走到 n 号点,输出 −1 。 输入 第一行包含两个整数 n 和 m。 接下来 m 行…

css图片设为灰色

使用filter方式将图片设置为灰色 普通图片使用&#xff1a;filter: saturate(0); 纯白图片使用&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"width…

【Luogu】动态规划一

P5414 [YNOI2019] 排序 - 洛谷 思路&#xff1a; 可以想到对于任意一个需要换位置的数字&#xff0c;我们不可能换两次及以上&#xff0c;那么这题就可以转化为求一个最大和的最长不递减子序列&#xff0c;最后的答案就是众和减去这个最大和 代码&#xff1a; #include <…

什么是管理思维?

管理思维是指在管理活动中形成的系统性、战略性和创造性的思考方式&#xff0c;帮助个人或团队更高效地达成目标。它不仅适用于企业管理&#xff0c;也适用于个人成长、项目执行和复杂问题解决。以下是关于管理思维的核心内容&#xff1a; 一、管理思维的核心特征 1. 系统性思…

利用TCP+多进程技术实现私聊信息

服务器&#xff1a; import socket from multiprocessing import Process from threading import Threaduser_dic {}def send_recv(client_conn, client_addr):while 1:# 接收客户端发送的消息res client_conn.recv(1024).decode("utf-8")print("客户端发送…

Hbuilder 上的水印相机实现方案 (vue3 + vite + hbuilder)

效果 思路 通过 live-pusher 这个视频推流的组件来获取摄像头拿到视频的一帧图片之后&#xff0c;跳转到正常的 vue 页面&#xff0c;通过 canvas 来处理图片水印 源码 live-pusher 这个组件必须是 nvue 的 至于什么是 nvue&#xff0c;看这个官方文档吧 https://uniapp.dcl…

Spark,IDEA编写Maven项目

IDEA中编写Maven项目 1.打开IDEA新建项目2.选择java语言&#xff0c;构建系统选择Maven 3.IDEA中配置Maven 注&#xff1a;这些文件都是我们老师帮我们在网上找了改动后给我们的&#xff0c;大家可自行在网上查找 编写代码测试HDFS连接 1.在之前创建的pom.xml文件中添加下…

初识Redis · C++客户端set和zset

目录 前言&#xff1a; set sadd sismember smembers spop scard sinter sinterstore zset zadd zrange zcard zrem zrank zscore 前言&#xff1a; 前文我们已经介绍了string list hash在Redis-plus-plus的使用&#xff0c;本文我们开始介绍set和zset在redis-plus-pl…

sed命令笔记250419

sed命令笔记250419 sed&#xff08;Stream Editor&#xff09;是 Linux/Unix 系统中强大的流编辑器&#xff0c;主要用于对文本进行过滤和转换&#xff08;按行处理&#xff09;。它支持正则表达式&#xff0c;适合处理文本替换、删除、插入等操作。以下是 sed 的详细解析&…

ubuntu-24.04.2-live-server-arm64基于cloud-init实现分区自动扩容(LVM分区模式)

1. 环境 虚拟机镜像ISO&#xff1a;ubuntu-24.04.2-live-server-arm64.iso 2. 定制cloud-init镜像 2.1 安装OS 基于ubuntu-24.04.2-live-server-arm64.iso&#xff0c;通过virt-manager安装操作系统&#xff0c;语言建议选择英文&#xff0c;分区选择基于LVM的自动分区&…

vue3专题1------父组件中更改子组件的属性

理解 Vue 3 中父组件如何引用子组件的属性是一个很重要的概念。 这里涉及到 defineExpose 和 ref 这两个关键点。 方法&#xff1a;使用 defineExpose 在子组件中暴露属性&#xff0c;然后在父组件中使用 ref 获取子组件实例并访问暴露的属性。 下面我将详细解释这个过程&…

数据仓库分层架构解析:从理论到实战的完整指南​​

数据仓库分层是构建高效数据体系的核心方法论。本文系统阐述ODS、DWD、DWS、ADS四层架构的设计原理&#xff0c;结合电商用户行为分析场景&#xff0c;详解各层功能及协作流程&#xff0c;并给出分层设计的原则与避坑指南&#xff0c;帮助读者掌握分层架构的落地方法。 一、为什…

从零搭建一套前端开发环境

一、基础环境搭建 1.NVM(Node Version Manager)安装 简介 nvm&#xff08;Node Version Manager&#xff09; 是一个用于管理多个 Node.js 版本的工具&#xff0c;允许开发者在同一台机器上轻松安装、切换和使用不同版本的 Node.js。它特别适合需要同时维护多个项目&#xff…

计算机组成原理笔记(十六)——4.1基本算术运算的实现

计算机中最基本的算术运算是加法运算&#xff0c;加、减、乘、除运算最终都可以归结为加法运算。 4.1.1加法器 一、加法器的基本单元 加法器的核心单元是 全加器&#xff08;Full Adder, FA&#xff09;&#xff0c;而所有加法器都由 半加器&#xff08;Half Adder, HA&…

利用Qt创建一个模拟问答系统

界面&#xff1a; 添加了聊天显示区域&#xff08;QTextEdit&#xff09; 添加了发送按钮和清空对话按钮 优化了布局和窗口大小添加了时间戳显示 2、功能&#xff1a; 支持实时对话可以清空对话历史 支持按回车发送消息 添加了简单的关键词匹配响应系统 交互体验&#x…

神经光子渲染:物理级真实感图像生成——从麦克斯韦方程到深度学习

一、技术背景与核心突破 2025年&#xff0c;神经光子渲染&#xff08;Photonic Neural Rendering, PNR&#xff09;技术通过物理光学方程与神经辐射场的深度融合&#xff0c;在AIGC检测工具&#xff08;如GPTDetector 5.0&#xff09;的识别准确率从98%降至12%。该技术突破性地…

Linux中手动安装7-Zip软件文档

7zip位于EPEL源中&#xff0c;如果服务器可以联网或者配置了本地EPEL源则可以直接安装 yum install p7zip p7zip-plugins -y对于无法联网且没有配置本地EPEL源的服务器&#xff0c;可以通过官网下载安装包后&#xff0c;上传至服务器&#xff0c;手动安装 ## 下载地址&#x…

[密码学基础]GM/T 0018-2023 密码设备应用接口规范深度解析:技术革新与开发者实践

GM/T 0018-2023 密码设备应用接口规范深度解析&#xff1a;技术革新与开发者实践 GM/T 0018-2023《密码设备应用接口规范》是中国密码行业的重要标准&#xff0c;于2023年12月4日发布&#xff0c;2024年6月1日正式实施&#xff0c;替代了2012年版标准。该标准旨在规范密码设备…