2012-06-01 6 views
11

Ho provato a eseguire un semplice programma che è stato scritto con Qt e QSslSocket è utilizzato in. Sto eseguendo questo programma su una macchina Ubuntu 12.04 con OpenSSL installato. Ma ho ottenuto i seguenti errori:Funzioni non risolte durante il lavoro con QSslSocket

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 

Come posso risolvere questi errori?

+1

Provare a copiare 'libcrypto' e' libssl' nella posizione da cui si avvia l'app – maverik

+0

@maverik ~> Grazie! La tua soluzione è stata utile. – saeed

risposta

1

è necessario includere questo file:

#include <QtNetwork> 

E nel file .pro, aggiungere questa riga:

QT += network 
+1

Grazie! Ma se non avessi fatto questi passaggi, non potrei nemmeno usare QSslSocket stesso. – saeed

+1

Puoi usare 'QSslSocket' senza' + = network' - se usi 'QWebView'. Detto questo, il problema non è causato dalla mancanza di '+ = network'; è a causa delle DLL OpenSSL mancanti. – Timmmm

3

Ho avuto lo stesso problema con QT 5.0.1 e QT 5.1.1, e alla fine mi sono reso conto che ho bisogno di copiare File DLL OpenSSL accanto al file binario dell'applicazione. Per qualche motivo QT non caricare i file DLL da Windows percorso ...

Ho usato OpenSSL Win32 0_9_8y

2

per Ubuntu o (Debian Linux based) installare openssl e libssl-dev

cioè sudo apt-get install openssl libssl-dev.

Per Red Hat, Fedora, CentOS (linux basato rpm) installare openssl e openssl-devel

cioè yum install openssl openssl-devel

21

Su Windows/MinGW è necessario copiare questi file la tua directory exe.

C:\Qt\Tools\mingw492_32\opt\bin\libeay32.dll 
C:\Qt\Tools\mingw492_32\opt\bin\ssleay32.dll 

oppure è possibile copiare C:\Qt\Tools\mingw492_32\bin se si desidera lavorare con tutte le tue applicazioni. Ovviamente è necessario distribuirli con il tuo programma.

In realtà non necessario aggiungere QT += network.

+0

Ecco perché amo SO. Per riferimento, gli ultimi Qt/MinGW hanno queste DLL in '\ Qt \ Tools \ mingw530_32 \ opt \ bin'. – TranslucentCloud

0

L'installazione del pacchetto lua-openssl su debian sembra aver risolto il problema per me.

Problemi correlati