Come includere OpenSSL in un progetto Qt

Sono nuovo di Qt, ho fatto un po ‘di Google e non riesco a trovare una risposta abbastanza dettagliata.

Ho bisogno di usare OpenSSL nel mio progetto Qt basato su qmake. Come faccio a scaricarlo / installarlo / collegarlo in modo da poter semplicemente fare una dichiarazione di inclusione e utilizzare le sue funzioni nel mio codice?

Supponendo che Windows, è ansible scaricare la sua installazione dalla pagina del progetto di installazione OpenSSL Win32 . È ansible scegliere uno per lo sviluppo di windows a 64 bit o per 32 bit. Basta eseguire il setup e tutto sarà fatto facilmente. La directory di installazione predefinita è: C: \ OpenSSL-Win32
In Qt creator , se vuoi colbind una libreria al tuo progetto, puoi semplicemente aggiungere questa linea al tuo file .pro (file di progetto):

LIBS += -L/path/to -llibname 

Quindi ecco cosa facciamo per questa libreria (per esempio per colbind ubsec.lib)

 LIBS += -LC:/OpenSSL-Win32/lib -lubsec 

Presta attenzione a -L e -l . Vedi questa domanda Non è nemmeno necessario specificare .lib alla fine del nome della libreria.

Per includere i file .h aggiungi questa linea al tuo file .pro:

 INCLUDEPATH += C:/OpenSSL-Win32/include 

dopo di che puoi includere un file come questo:

 #include  

Da George at Unable per usare i file AES di OpenSSL in Qt Creator :

Se questo è su Linux, aggiungi quanto segue nel tuo file .pro:

 PKGCONFIG += openssl 

Gestirà tutti i percorsi di intestazione necessari, le opzioni di compilatore-linker e le librerie.

E assicurati di avere il pacchetto openssl-devel installato nel tuo sistema.

Stavo lavorando su Win 7 (32) con Qt5.5, e nessuna di queste risposte ha funzionato per me.
Quindi voglio solo condividere una soluzione che alla fine ha funzionato:

1. Ho OpenSSL installato in C: \ OpenSSL-Win32
2. In c: \ OpenSSL-Win32 \ MinGW ci sono due file di libreria:
libeay32.a & ssleay32.a
3. Ho fatto una copia di ognuno di essi rinominato le estensioni:
libeay32.a -> libeay32.lib & ssleay32.a -> ssleay32.lib
4. Ho collegato le librerie nel mio file .pro in questo modo:
LIBS += -LC:/OpenSSL-Win32/lib/MinGW -llibeay32
LIBS += -LC:/OpenSSL-Win32/lib/MinGW -lssleay32
INCLUDEPATH += C:/OpenSSL-Win32/include
5. Ho copiato 3 file .dll da C: \ OpenSSL-Win32:
(libeay32.dll, libssl32.dll, ssleay32.dll)
alla mia cartella build / debug:
(Build-XXXXX-Desktop_Qt_5_5_1_MSVC2012_32bit-debug / debug)

Spero che questo ti possa aiutare.

se sei su win7 e la tua versione qt è mingw, e installa openssl da http://slproweb.com/products/Win32OpenSSL.html , assicurati che la tua lib dovrebbe essere in OpenSSL-Win32 / lib / MinGW, e aggiungi un “lib” pre al libeay32.a e ssleay32.a.

Se si utilizza cmake come sistema di compilazione per il proprio progetto, è ansible includere FindOpenSSL.cmake come segue:

 #set(OPENSSL_USE_STATIC_LIBS TRUE) # if you want to use static libssl.a and libcrypto.a include(FindOpenSSL) #add_executable(${PROJECT_NAME} ...) or add_library(${PROJECT_NAME} ...) target_link_libraries(${PROJECT_NAME} PRIVATE ${CMAKE_DL_LIBS} OpenSSL::SSL OpenSSL::Crypto) 

${CMAKE_DL_LIBS} è richiesto su sistemi Linux per evitare errori di collegamento come “simbolo dlopen non trovato …”. Su Windows è diventato vuoto.

Se la directory di installazione di openssl non è standard, è necessario fornire OPENSSL_ROOT_DIR a cmake , ad esempio aggiungere set(OPENSSL_ROOT_DIR "C:/msys64/mingw32") prima di include o specificare -DOPENSSL_ROOT_DIR:PATH=C:/msys64/mingw32 a cmake eseguibile (in “Projects” -> “Build settings” -> “CMake” tab).