首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QSslSocket:无法调用未解析函数

QSslSocket:无法调用未解析函数
EN

Stack Overflow用户
提问于 2017-01-25 17:27:56
回答 5查看 21.9K关注 0票数 13

我正在使用4.2.0运行QT5.7.1 (MSVC 2015,32位)。我对QSslSocket有个问题。我收到以下错误:

代码语言:javascript
复制
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工作过,可以给我一些步骤让套接字正常工作,或者有什么建议?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-06-04 12:34:35

您需要手动添加对OppenSSL的支持,因为android放弃了对它的支持,而且我使用的是QT5.9,它不适合您,所以创建openSSL库是您的任务。

您可以直接在这里下载https://wiki.openssl.org/index.php/Binaries

或者在这里https://indy.fulgan.com/SSL/

然后复制这些文件并将它们包含到您的项目中

代码语言:javascript
复制
libcrypto.so
libssl.so

那应该是正确的

或者您可以使用此脚本生成libcrypto.solibssl.so,只需一步一步地执行https://github.com/ekke/android-openssl-qt

票数 3
EN

Stack Overflow用户

发布于 2017-09-14 18:49:09

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

我通过将DLL添加到Qt安装的bin文件夹来修正Qt,并通过在发行版中包含前面提到的DLL来修正这个问题。

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

不要忘记,您的64位应用程序应该有64位版本的DLL,32位应用程序应该有32位DLL,这样您就不会有与这家伙相同的问题了。

补充说明:

  • 从Qt5.2开始,您必须使用版本1.0.0或更高版本。0.9.8不再起作用了。(资料来源:http://doc.qt.io/qt-5/ssl.html)
  • 对于QT5.10.1的标准MSVC2017x64发行版,sslLibraryBuildVersionString()返回"OpenSSL 1.0.2o“。我使用1.0.2p作为发行版。
  • OpenSSL DLL从OpenSSL 1.1.0开始将名称更改为libcrypto-1_1*.dlllibssl-1_1*.dll。标准的Qt发行版至今还没有使用这些。2018年。
  • OpenSSL GitHub下载在这里:https://github.com/openssl/openssl/tags

希望这对下一个人有帮助。抱歉让一个旧职位复活了。

票数 11
EN

Stack Overflow用户

发布于 2017-10-28 00:26:14

将这两个文件复制到path:'C:\Qt\Tools(msvc/mingw){version}\bin‘

代码语言:javascript
复制
C:\Qt\Tools\(msvc|mingw)\opt\bin\libeay32.dll
C:\Qt\Tools\(msvc|mingw)\opt\bin\ssleay32.dll
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41857883

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档