我正在使用4.2.0运行QT5.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工作过,可以给我一些步骤让套接字正常工作,或者有什么建议?
发布于 2017-06-04 12:34:35
您需要手动添加对OppenSSL的支持,因为android放弃了对它的支持,而且我使用的是QT5.9,它不适合您,所以创建openSSL库是您的任务。
您可以直接在这里下载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
发布于 2017-09-14 18:49:09
我是通过搜索来这里的。在我的例子中,我在随机机器上得到了这个错误,因为它们缺少libeay32.dll和ssleay32.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,这样您就不会有与这家伙相同的问题了。
补充说明:
sslLibraryBuildVersionString()返回"OpenSSL 1.0.2o“。我使用1.0.2p作为发行版。libcrypto-1_1*.dll和libssl-1_1*.dll。标准的Qt发行版至今还没有使用这些。2018年。希望这对下一个人有帮助。抱歉让一个旧职位复活了。
发布于 2017-10-28 00:26:14
将这两个文件复制到path:'C:\Qt\Tools(msvc/mingw){version}\bin‘
C:\Qt\Tools\(msvc|mingw)\opt\bin\libeay32.dll
C:\Qt\Tools\(msvc|mingw)\opt\bin\ssleay32.dllhttps://stackoverflow.com/questions/41857883
复制相似问题