使用QSslSocket时未解决的函数

时间:2012-06-01 07:58:27

标签: qt openssl

我尝试运行一个用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

如何修复这些错误?

7 个答案:

答案 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 opensslyum 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软件包似乎已经为我解决了这个问题。