【问题标题】:Using OpenSSL v1.1.1 in a Qt-project for Windows在 Windows 的 Qt 项目中使用 OpenSSL v1.1.1
【发布时间】:2020-03-24 09:26:22
【问题描述】:

我的 Windows 程序使用 OpenSSL 库通过 HTTPS 接收 JSON 数据。

在 Qt 版本 5.12.3 中,使用了 OpenSSL 1.0.2 库,并且一切都变得简单而简单。 我只是把文件从“c:\Qt\Qt5.12.3\Tools\mingw730_64\opt\bin\”(ssleay32.dll,libeay32.dll) 放入包含我的程序可执行文件的文件夹中,一切正常(我使用 MinGW 进行编译)。

现在 Qt 5.14.1 出现了 OpenSSL 1.1.1d,我不明白如何将它连接到我的程序以便 QNetworkAccessManager 终于开始工作了。库“ssleay32.dll”、“libeay32.dll”1.1.1d 版根本不存在。 我试图将 libcrypto-1_1.dll 和 libssl-1_1.dll 库(来自 c: \ Qt \ Qt5.14.1 \ Tools \ QtCreator \ bin )放到我的 exe 中,但没有帮助。

是的,它们是 32 位的,但我也尝试将我的项目编译为 x32。

代码

qDebug () << QSslSocket :: supportsSsl () << QSslSocket :: sslLibraryBuildVersionString () << QSslSocket :: sslLibraryVersionString ();

返回

false "OpenSSL 1.1.1d 10 Sep 2019" ""

所以.. 对于 Windows 10,是否可以将 Qt 项目连接到 OpenSSL v1.1.1d - 无需重新编译 Qt 和无需编译 OpenSSL 库??

【问题讨论】:

  • 您找到解决方案了吗?我目前遇到了同样的问题。

标签: windows qt openssl qt5 mingw


【解决方案1】:

我们拥有的 Qt 预编译版本是针对更新版本的 OpenSSL 构建的,而不是 Qt 安装程序本身作为 DLL 提供的版本。虽然这在我的机器上没问题,但在干净的 Windows 10 上部署时,它无法加载并且应用程序报告 TLS 错误。相反,我得到了一个更新的 OpenSSL 库集,这似乎有效。

为了验证这一点,由于我无法访问客户端的计算机,我使用 Hyper-V 和 Microsoft 自己提供的 Windows 10 Professional 映像运行了一个 VM。我在那里看到了问题,一旦我用更新的 DLL 覆盖了 libcrypto 和 libssl DLL,该应用程序就可以正常工作了。

【讨论】:

    【解决方案2】:

    我遇到了和你一样的问题。我以为是 OpenSSL 的问题,直到我读到Qt for Windows - Deployment,我将 vccorlib140.dll 和 vcruntime140.dll 复制到我的程序目录中,一切正常。

    【讨论】:

    • 这不是我的情况。我已经在系统上安装了 Microsoft VC ++ Redistributable (x64 / x86)。 x64-c:\Windows\System32\x32-c:\Windows\SysWOW64\vccorlib140.dll(14.23.27820.0)vcruntime140.dll(14.23.27820.0)
    猜你喜欢
    • 2013-01-18
    • 2017-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多