我使用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
工作,可以给我步骤让套接字工作或有任何建议?
答案 0 :(得分:7)
我最后通过谷歌搜索来到这里。在我的情况下,我在随机计算机上收到此错误,因为他们错过了libeay32.dll
和ssleay32.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相同的问题
附加说明:
sslLibraryBuildVersionString()
返回“OpenSSL 1.0.2o”。我使用1.0.2p作为我的发行版。libcrypto-1_1*.dll
和libssl-1_1*.dll
。标准Qt发行版尚未使用截至2018年9月的版本。希望这有助于下一个人。很抱歉复活旧帖子。
答案 1 :(得分:6)
将这两个文件复制到路径:'C:\ Qt \ Tools(msvc / mingw){version} \ bin'
C:\Qt\Tools\(msvc|mingw)\opt\bin\libeay32.dll
C:\Qt\Tools\(msvc|mingw)\opt\bin\ssleay32.dll
答案 2 :(得分:2)
你需要手动添加对OppenSSL的支持,因为android放弃了它的支持,我使用的是QT 5.9而且它不适合你 所以你的任务是创建openSSL lib
您可以直接在此下载 https://wiki.openssl.org/index.php/Binaries
或此处https://indy.fulgan.com/SSL/
然后复制这些文件并将其包含在您的项目中
libcrypto.so
libssl.so
这应该可以正常工作
或者您可以使用此脚本生成libcrypto.so
和libssl.so
,一步一步跟着它
https://github.com/ekke/android-openssl-qt
答案 3 :(得分:0)
通过结合此处的现有答案和一些研究,我设法使其可与MSVC2017 x64编译器一起使用:
{Your_Qt_Folder}/{Qt_version}/msvc2017_64/bin
答案 4 :(得分:0)
我解决了这个问题。
libeay32.dll
,ssleay32.dll
) >
复制libeay32.dll
和ssleay32.dll
在Qt文件夹中找到QtNetwork*.dll
。在我的情况下,路径为C:\Qt\Tools\QtCreator\bin
。
在libeay32.dll
中粘贴ssleay32.dll
和C:\Qt\Tools\QtCreator\bin
。