gpt4 book ai didi

c++ - QSslSocket:无法调用未解析的函数

转载 作者:可可西里 更新时间:2023-11-01 15:48:25 25 4
gpt4 key购买 nike

我正在使用 Qt Creator 4.2.0 运行 Qt 5.7.1(MSVC 2015,32 位)。 QSslSocket 有问题。我收到以下错误:

qt.network.ssl: QSslSocket: cannot call unresolved function SSLv23_client_method
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_CTX_new
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_library_init
qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error
qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error

我去了以下位置openssl github并下载了 zip 文件。我已将“libeay32.dll”和“ssleay32.dll”文件移动到我的发布目录,但我仍然收到这些错误。是否有人已经让 QSslSocket 正常工作,可以给我一些让套接字正常工作的步骤或有任何建议?

最佳答案

我通过谷歌搜索最终来到这里。在我的例子中,我在随机机器上遇到了这个错误,因为它们缺少正确版本的 libeay32.dllssleay32.dll。它是“随机的”,因为有些计算机已从其他软件将这些加载到 PATH 中,而有些则没有。

我通过将 DLL 添加到我的 Qt 安装的 bin 文件夹中为 Qt Creator 修复了这个问题,并通过在我的发行版中包含上述 DLL 来修复了发行版上的这个问题。

DLL 应该与最初编译 Qt 时使用的 OpenSSL 版本相同或相似。如果你没有自己编译它,从 Qt 5.4 开始你可以用 QSslSocket::sslLibraryBuildVersionString() 查询它. (来源:https://stackoverflow.com/a/42297296/1666676)

不要忘记您的 64 位应用程序应该有 64 位版本的 DLL,而 32 位应用程序应该有 32 位 DLL,这样您就不会遇到与 this guy 相同的问题。 .


补充说明:

  • 从 Qt 5.2 开始,您必须使用 1.0.0 或更高版本。 0.9.8 不再有效。 (来源:http://doc.qt.io/qt-5/ssl.html)
  • 对于我的 Qt 5.10.1 标准 MSVC2017x64 发行版,sslLibraryBuildVersionString() 返回“OpenSSL 1.0.2o”。我的发行版使用 1.0.2p。
  • 从 OpenSSL 1.1.0 开始,OpenSSL DLL 将名称更改为 libcrypto-1_1*.dlllibssl-1_1*.dll。截至 2018 年 9 月,标准 Qt 发行版尚未使用它们。
  • OpenSSL GitHub 下载地址:https://github.com/openssl/openssl/tags

希望这对下一个人有帮助。很抱歉恢复旧帖子。

关于c++ - QSslSocket:无法调用未解析的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41857883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com