繁体   English   中英

使用QSslSocket时未解决的函数

[英]Unresolved Functions While Working With QSslSocket

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

我该如何解决这些错误?

在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

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

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

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

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

我使用过OpenSSL Win32 0_9_8y

对于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

您需要包含此文件:

 #include <QtNetwork>

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

 QT += network

我将OpenSSL降级到版本1.0并且有效。

在debian上安装lua-openssl软件包似乎已经为我解决了这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM