Qt 6.4 应用程序可以从 QtCreator 运行,但不能独立运行(OpenSSL 问题)

问题描述 投票:0回答:1

所以我刚刚将一个工作应用程序从 Qt 6.1.2 迁移到 Qt 6.4.2。在 QtCreator 中按下播放键,一切都会运行,特别是通过 HTTPS 完成与远程服务器的连接。我使用 QSslSocket::supportsSsl() 来检查 SSL 是否一切正常,如果不是,我将关闭应用程序。因此,应用程序打开这一事实意味着一切都在原处。

但是我确实在 QtCreator 控制台中得到了这个:

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

但是它确实工作得很好。我测试过。

一旦我完成了这项工作,我就可以通过执行以下操作来运行windeployqt

PATH/TO/windeployqt --qmldir PATH/TO/qmldir PATH/TO/myapp.exe

它运行并且没有错误。但现在应用程序既不能从 QtCreator(按播放键)运行,也不能从双击可执行文件运行。 QtCreator 控制台现在抛出此错误:

qt.network.ssl: No functional TLS backend

我确保 libcrypto 和 libssl 库(Qt Maintenanceer 安装的 OpenSSL 目录和 QtCreator 的 bin 目录中的库相同)位于可执行文件的目录中。

但我不知道为什么它不再起作用了。这个完全相同的过程在 Qt 6.1.2 上运行,没有任何问题。

有什么想法吗?

编辑:更新:所以我一直在闲逛。我发现了以下有趣的花絮。如果我从运行 Windeployqt 的可执行目录中删除 QtCore6.dll,那么我可以再次从 QtCreator 启动该应用程序。我不知道这是否对任何人有帮助,但我把它放在这里以防万一。

qt
1个回答
0
投票

为我解决的问题是: 我在可执行文件旁边复制了包含 3 个文件的 tls 文件夹

qcertonlybackend.dll
qopensslbackend.dll
qschannelbackend.dll

这些文件的位置在 qt 5.5 中不存在 这用 wt 6.5.1 为我解决了这个问题 我希望这也对其他人有帮助

© www.soinside.com 2019 - 2024. All rights reserved.