Windows Qt5 中的 OpenSSL

OpenSSL in Qt5 on Windows

我正在尝试 link openssl with qt5.12 但当 运行 可从 qt 和命令行执行时结果不同。我使用 QSslSocket::supportsSsl()、QSslSocket::sslLibraryVersionString() 和 QSslSocket::sslLibraryBuildVersionString() 来观察结果。当来自 qt 的 运行 exe 时,我分别得到以下输出 true OpenSSL 1.1.1d 10 Sep 2019 OpenSSL 1.1.1k 25 Mar 2021 和命令行 false "" OpenSSL 1.1.1k 25 Mar 2021。 exe 使用 msvc 2017 64 位编译。可能是什么问题以及 qt 从哪里获得该库?

使用 listdlls 工具,我设法找到了 openssl DLL 的名称和位置。它们是 libssl-1_1-x64.dlllibcrypto-1_1-x64.dll,位于 %QT_INSTALL_PATH%/Tools/QtCreator/bin。将这些 DLL 复制到项目的构建文件夹解决了问题。

QtCreator 使用的构建环境显然是默认环境,可以在 Projects -> Run 中找到。它设置了许多环境变量,在我的例子中,它更新了 PATH 变量,添加了 QtCreator bin 文件夹的路径。

Qt 默认不提供 SSL 库,您需要手动安装它们,以确保您有兼容的 SSL 库从 Qt 维护工具[=19= 安装OpenSSL XXX Toolkit ] 然后在 <Qt directory>/Tools/OpenSSL 中,您将找到带有二进制文件的 OpenSSL 包。

为了将 Windows Qt 应用程序完全发布到 end-users,请仔细研究 https://doc.qt.io/qt-5/windows-deployment.html