2013-02-04 20 views
12

Sono nuovo a Qt, ho fatto un po 'di Google e non riesco a trovare una risposta abbastanza dettagliata.Come includere OpenSSL in un progetto Qt

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?

+0

quale sistema operativo? – saeed

+0

Windows 7 64 Bit – Mitch

+2

Qualcuno sa come farlo per Mac? –

risposta

18

Presumendo Windows, è possibile scaricare l'installazione da Win32 OpenSSL Installation Project page. È possibile scegliere uno per lo sviluppo di finestre 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 poi si desidera collegare una libreria al progetto si può semplicemente aggiungere questa riga al file .pro (file di progetto):

LIBS += -L/path/to -llibname 

Così qui è quello che facciamo per questa libreria (per esempio per collegare ubsec.lib)

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

Prestare attenzione alla -L e -l. See this question. Non è nemmeno necessario specificare .lib alla fine del nome della libreria.

Per inclusi i file .h aggiunge questa riga al file .pro:

INCLUDEPATH += C:/OpenSSL-Win32/include 

dopo che si può includere un file in questo modo:

#include <openssl/aes.h> 
+0

Grazie mille. Questo è il tipo di risposta che stavo cercando. – Mitch

+0

Che cos'è 'ubsec.lib' e che cosa ha a che fare con il collegamento a OpenSSL? – jww

+0

@jww Solo un esempio. – saeed

4

Da George a Unable to use AES files of OpenSSL in Qt Creator:

If this is on Linux, add the following into your .pro file: 

    PKGCONFIG += openssl 

It will handle all necessary header paths, compile-linker options 
and the libraries. 

And make sure you have the openssl-devel package installed in your system. 
0

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

+1

Sembra una buona risposta, ma puoi essere un po 'più chiaro per favore. Tx. –

+0

scusa, molto tempo dall'ultimo accesso. puoi prima seguire questo http://stackoverflow.com/a/14681524/6193558 quindi modificare il nome dei due file: libeay32.a ssleay32.a. Ho risolto questo problema mentre mi riferisco alla soluzione di altri. la speranza può aiutarti – loc

2

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 finalmente ha funzionato:

1. Ho installato OpenSSL 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 ciascuno di essi un rinominate 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 possa essere d'aiuto.

+0

Non vedo cosa c'è di sbagliato nella risposta saeed. – dlewin

0

Se si utilizza cmake come sistema di compilazione per il progetto, allora si può 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 Linux sistemi per evitare errori di collegamento in tempo come "simbolo dlopen non trovato ... ". Su Windows è diventato vuoto.

Se la directory di installazione openssl non è standard, è necessario fornire OPENSSL_ROOT_DIR a cmake, ad es. per aggiungere set(OPENSSL_ROOT_DIR "C:/msys64/mingw32") prima del include o per specificare -DOPENSSL_ROOT_DIR:PATH=C:/msys64/mingw32 per cmake eseguibile (in "Progetti" -> scheda "Crea impostazioni" -> "CMake").

Problemi correlati