2013-02-04 10 views
12

Ich bin neu in Qt, ich habe etwas Googleing gemacht und kann keine detaillierte genug Antwort finden.Wie man OpenSSL in ein Qt-Projekt einbezieht

Ich brauche OpenSSL in meinem Qmake-basierten Qt-Projekt. Wie gehe ich vor, um es herunterzuladen/zu installieren/zu verlinken, damit ich einfach eine Include-Anweisung ausführen und seine Funktionen in meinem Code verwenden kann?

+0

welches Betriebssystem? – saeed

+0

Windows 7 64Bit – Mitch

+2

Wer weiß, wie man dies für Mac stattdessen tun? –

Antwort

18

Unter Windows können Sie die Installation von Win32 OpenSSL Installation Project page herunterladen. Sie können eine für 64-Bit-Windows-Entwicklung oder für 32-Bit-Windows auswählen. Führen Sie einfach das Setup aus und alles wird einfach gemacht. Das Standardinstallationsverzeichnis ist: C: \ OpenSSL-Win32
In Qt Creator, wenn Sie dann eine Bibliothek zu Ihrem Projekt verknüpfen möchten, können Sie einfach diese Zeile in der .pro-Datei (Projektdatei) hinzufügen:

LIBS += -L/path/to -llibname 

Also hier ist, was wir für diese Bibliothek zu tun (zum Beispiel zu verknüpfen ubsec.lib)

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

Achten Sie auf -L und -l. See this question. Sie müssen nicht einmal .lib am Ende des Bibliotheksnamens angeben.

Für einschließlich H-Dateien fügen Sie diese Zeile in Ihre .proDatei:

INCLUDEPATH += C:/OpenSSL-Win32/include 

danach können Sie eine Datei wie folgt umfassen:

#include <openssl/aes.h> 
+0

Vielen Dank. Das ist die Art von Antwort, nach der ich gesucht habe. – Mitch

+0

Was ist 'ubsec.lib' und was hat es mit der Verknüpfung von OpenSSL zu tun? – jww

+0

@jww Nur ein Beispiel. – saeed

4

Von George bei 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

Wenn Sie auf Win7 sind, und Ihre QT-Version ist mingw, und installieren Sie OpenSSL von http://slproweb.com/products/Win32OpenSSL.html, stelle sicher, dass deine lib in OpenSSL-Win32/lib/MinGW sein sollte, und füge eine lib zu den libeay32.a und ssleay32.a hinzu

+1

Es sieht wie eine gute Antwort aus, aber können Sie bitte ein wenig klarer sein bitte. Tx. –

+0

Entschuldigung, lange Zeit seit der letzten Anmeldung. Sie können zuerst folgen http://StackOverflow.com/A/14681524/6193558 dann änderte den Namen der beiden Dateien: libeay32.a ssleay32.a. Ich habe dieses Problem gelöst, während ich auf die Lösung des anderen verwiesen habe. Hoffnung kann dir helfen. – loc

2

Ich arbeitete an Win7 (32) mit Qt5 .5, und keine dieser Antworten funktionierte für mich.
Deshalb möchte ich eine Lösung nur teilen, die schließlich arbeitete:

1. Ich OpenSSL in C installiert haben: \ OpenSSL-Win32
2. c: \ OpenSSL-Win32 \ MinGW gibt es zwei Bibliotheksdateien:
libeay32.a & ssleay32.a
3. ich eine Kopie von jedem von ihnen gemacht habe die Erweiterungen eine umbenannt:
libeay32.a -> libeay32.lib & ssleay32.a -> ssleay32.lib
4. ich auf diese Weise Bibliotheken in meiner .proDatei verknüpft:
LIBS += -LC:/OpenSSL-Win32/lib/MinGW -llibeay32
LIBS += -LC:/OpenSSL-Win32/lib/MinGW -lssleay32
INCLUDEPATH += C:/OpenSSL-Win32/include
5. kopiert I 3 DLL-Dateien von C: \ OpenSSL-Win32:
(libeay32.dll, libssl32.dll, ssleay32.dll)
meinen build/Debug-Ordner:
(build-XXXXX -Desktop_Qt_5_5_1_MSVC2012_32bit-Debug/debug)

Ich hoffe, das wird helfen.

+0

Ich sehe nicht, was mit der Saeed Antwort falsch ist. – dlewin

0

Wenn Sie cmake als Build-System für Ihr Projekt verwenden, dann können Sie FindOpenSSL.cmake sind wie folgt:

#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} auf Linux erforderlich ist Systeme Link Zeitfehler wie „dlopen Symbol zu vermeiden, wurde nicht gefunden ... ". An Fenstern wurde es leer.

Wenn das Installationsverzeichnis openssl nicht Standard ist, sollten Sie OPENSSL_ROOT_DIR an cmake, z. um set(OPENSSL_ROOT_DIR "C:/msys64/mingw32") vor include hinzuzufügen oder um -DOPENSSL_ROOT_DIR:PATH=C:/msys64/mingw32 zu cmake ausführbaren (in "Projekte" -> "Build-Einstellungen" -> "CMake" Registerkarte).

Verwandte Themen