18

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

我该如何解决这些错误?

4

7 回答 7

35

在 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.

于 2016-01-31T18:17:07.253 回答
13

安装最新的 openSSL 版本。 yum install openssl, yum install libssl-dev..

并在您的 .pro 文件中添加 QT += network

来源:http ://codeblog.vurdalakov.net/2009/11/solution-qsslsocket-cannot-call.html

于 2012-06-01T08:25:28.530 回答
3

我在使用 QT 5.0.1 和 QT 5.1.1 时遇到了同样的问题,最后我意识到我需要在应用程序二进制文件旁边复制 OpenSSL DLL 文件。由于某种原因,QT 不会从 Windows 路径加载 DLL 文件...

我用过OpenSSL Win32 0_9_8y

于 2013-09-05T19:15:59.153 回答
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

于 2013-10-17T12:39:59.823 回答
2

我将 OpenSSL 降级到 1.0 版并且它工作正常。

于 2018-08-03T05:51:25.460 回答
1

您需要包含此文件:

 #include <QtNetwork>

在您的.pro文件中,添加以下行:

 QT += network
于 2012-06-01T08:09:13.007 回答
0

在 debian 上安装 lua-openssl 包似乎已经解决了我的问题。

于 2016-11-23T20:37:24.170 回答