我尝试运行一个用Qt编写的简单程序,并使用QSslSocket。 我在运行 OpenSSL 的Ubuntu 12.04计算机上运行此程序。 但是我遇到了以下错误:
QSslSocket: cannot call unresolved function SSLv3_client_method
QSslSocket: cannot call unresolved function SSL_CTX_new
QSslSocket: cannot call unresolved function SSL_library_init
QSslSocket: cannot call unresolved function ERR_get_error
如何修复这些错误?
答案 0 :(得分:30)
在Windows / MinGW上,您需要将这些文件复制到exe目录。
C:\Qt\Tools\mingw492_32\opt\bin\libeay32.dll
C:\Qt\Tools\mingw492_32\opt\bin\ssleay32.dll
如果您希望它与所有应用一起使用,您可以将它们复制到C:\Qt\Tools\mingw492_32\bin
。显然你需要用你的程序分发它们。
您实际上不需要添加QT += network
。
答案 1 :(得分:13)
安装最新的openSSL版本。
yum install openssl
,yum install libssl-dev.
。
在.pro文件中添加QT + = network
来源:http://codeblog.vurdalakov.net/2009/11/solution-qsslsocket-cannot-call.html
答案 2 :(得分:3)
我在QT 5.0.1和QT 5.1.1中遇到了同样的问题,最后我意识到我需要在应用程序二进制文件旁边复制OpenSSL DLL文件。由于某种原因,QT不从Windows路径加载DLL文件......
我使用了OpenSSL Win32 0_9_8y
答案 3 :(得分:3)
对于Ubuntu或(基于Debian的Linux)安装openssl和libssl-dev
即。 sudo apt-get install openssl libssl-dev 。
对于Red Hat,Fedora,CentOS(基于rpm的linux)安装openssl和openssl-devel
即。 yum install openssl openssl-devel
答案 4 :(得分:1)
您需要包含此文件:
#include <QtNetwork>
在.pro
文件中,添加以下行:
QT += network
答案 5 :(得分:1)
我将OpenSSL降级为1.0版,并且可以正常工作。
答案 6 :(得分:0)
在debian上安装lua-openssl软件包似乎已经为我解决了这个问题。