Cómo incluir OpenSSL en un proyecto de Qt

Soy nuevo en Qt, he hecho algo de Google y no puedo encontrar una respuesta lo suficientemente detallada.

Necesito usar OpenSSL en mi proyecto Qt basado en qmake. ¿Cómo hago para descargarlo / instalarlo / vincularlo, así puedo hacer una statement de inclusión y usar sus funciones en mi código?

Asumiendo Windows, puede descargar su instalación desde la página del Proyecto de Instalación de Win32 OpenSSL . Puede elegir uno para el desarrollo de ventanas de 64 bits o para 32 bits. Simplemente ejecute la configuración y todo se hará fácilmente. El directorio de instalación predeterminado es: C: \ OpenSSL-Win32
En el creador de Qt , si luego quieres vincular una biblioteca a tu proyecto, simplemente puedes agregar esta línea a tu archivo .pro (archivo de proyecto):

LIBS += -L/path/to -llibname 

Así que esto es lo que hacemos para esta biblioteca (por ejemplo, para vincular ubsec.lib)

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

Preste atención a -L y -l . Ver esta pregunta Ni siquiera necesita especificar .lib al final del nombre de la biblioteca.

Para incluir archivos .h, agregue esta línea a su archivo .pro:

 INCLUDEPATH += C:/OpenSSL-Win32/include 

después de eso puedes incluir un archivo como este:

 #include  

Desde George at Unable para usar archivos AES de OpenSSL en Qt Creator :

Si esto es en Linux, agregue lo siguiente en su archivo .pro:

 PKGCONFIG += openssl 

Manejará todas las rutas de encabezado necesarias, las opciones de comstackción-enlazador y las bibliotecas.

Y asegúrese de tener el paquete openssl-devel instalado en su sistema.

Estaba trabajando en Win 7 (32) con Qt5.5, y ninguna de estas respuestas funcionó para mí.
Así que solo quiero compartir una solución que finalmente funcionó:

1. Tengo OpenSSL instalado en C: \ OpenSSL-Win32
2. En c: \ OpenSSL-Win32 \ MinGW, hay dos archivos de biblioteca:
libeay32.a & ssleay32.a
3. He hecho una copia de cada uno de ellos y un cambio de nombre de las extensiones:
libeay32.a -> libeay32.lib & ssleay32.a -> ssleay32.lib
4. Vinculaba bibliotecas en mi archivo .pro de esta manera:
LIBS += -LC:/OpenSSL-Win32/lib/MinGW -llibeay32
LIBS += -LC:/OpenSSL-Win32/lib/MinGW -lssleay32
INCLUDEPATH += C:/OpenSSL-Win32/include
5. Copié 3 archivos .dll de C: \ OpenSSL-Win32:
(libeay32.dll, libssl32.dll, ssleay32.dll)
a mi carpeta de comstackción / depuración:
(build-XXXXX-Desktop_Qt_5_5_1_MSVC2012_32bit-Debug / debug)

Espero que esto sea de ayuda.

si está en win7, y su versión de qt es mingw, e instala openssl desde http://slproweb.com/products/Win32OpenSSL.html , asegúrese de que su lib esté en OpenSSL-Win32 / lib / MinGW, y agregue una “lib” anterior a la libeay32.a y ssleay32.a.

Si usa cmake como sistema de comstackción para su proyecto, puede incluir FindOpenSSL.cmake siguiente manera:

 #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} es necesario en los sistemas Linux para evitar errores de tiempo de enlace como “símbolo dlopen no encontrado …”. En ventanas se convirtió en vacío.

Si el directorio de instalación de openssl no es estándar, entonces debe proporcionar OPENSSL_ROOT_DIR para cmake , por ejemplo, para agregar un set(OPENSSL_ROOT_DIR "C:/msys64/mingw32") antes de include o especificar -DOPENSSL_ROOT_DIR:PATH=C:/msys64/mingw32 a cmake ejecutable (en “Proyectos” -> “Configuración de comstackción” -> pestaña “CMake”).