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



我正在使用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"one_answers"ssley32.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,这样你就不会遇到和这个家伙一样的问题。


附加说明:

  • 从Qt 5.2开始,必须使用1.0.0或更新版本。0.9.8不再有效。(来源:http://doc.qt.io/qt-5/ssl.html)
  • 对于我的标准MSVC2017x64发行版Qt 5.10.1sslLibraryBuildVersionString()返回"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:\Qt\Tools(msvc/mingw){version}\bin">

C:QtTools(msvc|mingw)optbinlibeay32.dll
C:QtTools(msvc|mingw)optbinssleay32.dll

您需要手动添加对OppenSSL的支持,因为android放弃了对它的支持,而我使用的是QT 5.9,它不适合您因此,创建openSSL库是您的使命

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

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

然后复制这些文件并将其包括在您的项目中

libcrypto.so
libssl.so

这应该正常工作

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

通过结合这里现有的答案和一些研究,我设法使其与MSVC2017 x64编译器一起工作:

  1. 从这里下载1.0版本(Win64 OpenSSLv1.0.2rLight):https://slproweb.com/products/Win32OpenSSL.html
  2. 安装时,请选择将DLL复制到OpenSSL bin目录
  3. 然后将libeay32.dllssleay32.dll从OpenSSL bin文件夹复制到:{Your_Qt_Folder}/{Qt_version}/msvc2017_64/bin

我解决了这个问题。

  1. 下载并安装v1.0.2s<lt--(libeay32.dllssleay32.dll)https://slproweb.com/products/Win32OpenSSL.html

  2. 复制libeay32.dllssleay32.dll

  3. 在Qt文件夹中查找QtNetwork*.dll。在我的情况下,路径是C:QtToolsQtCreatorbin

  4. C:QtToolsQtCreatorbin中粘贴libeay32.dllssleay32.dll

相关内容

  • 没有找到相关文章

最新更新