J'ai essayé d'exécuter un programme simple écrit avec Qt et QSslSocket est utilisé. J'exécute ce programme sur une machine Ubuntu 12.04 avec OpenSSL installé . Mais j'ai eu les erreurs suivantes:
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
Comment puis-je réparer ces erreurs?
Installez la dernière version de openSSL. yum install openssl
, yum install libssl-dev.
.
Et ajoutez QT + = network dans votre fichier .pro
Source: http://codeblog.vurdalakov.net/2009/11/solution-qsslsocket-cannot-call.html
Sous Windows/MinGW, vous devez copier ces fichiers dans votre répertoire exe.
C:\Qt\Tools\mingw492_32\opt\bin\libeay32.dll
C:\Qt\Tools\mingw492_32\opt\bin\ssleay32.dll
Ou vous pouvez les copier dans C:\Qt\Tools\mingw492_32\bin
si vous voulez que cela fonctionne avec toutes vos applications. De toute évidence, vous devez les distribuer avec votre programme.
Vous avez réellement not besoin d’ajouter QT += network
.
Pour Ubuntu ou (Linux basé sur Debian), installer openssl et libssl-dev
c'est-à-dire Sudo apt-get install openssl libssl-dev .
Pour Red Hat, Fedora, CentOS (linux basé sur rpm) installent openssl et openssl-devel
c'est-à-dire miam installer openssl openssl-devel
J'ai eu le même problème avec QT 5.0.1 et QT 5.1.1 et j'ai finalement réalisé que je devais copier les fichiers OpenSSL DLL situés à côté du fichier binaire de l'application. Pour une raison quelconque, QT ne charge pas les fichiers DLL à partir du chemin Windows ...
J'ai utilisé OpenSSL Win32 0_9_8y
Vous devez inclure ce fichier:
#include <QtNetwork>
Et dans votre fichier .pro
, ajoutez cette ligne:
QT += network
L'installation du paquetage lua-openssl sur debian semble avoir résolu le problème pour moi.
J'ai rétrogradé OpenSSL vers la version 1.0 et cela a fonctionné.