Подтвердить что ты не робот

Как включить OpenSSL в проект Qt

Я новичок в Qt, я сделал несколько Googleing и не могу найти достаточно подробный ответ.

Мне нужно использовать OpenSSL в моем Qt-проекте на основе qmake. Как мне загрузить/установить/связать его, чтобы я мог просто сделать оператор include и использовать его функции в моем коде?

4b9b3361

Ответ 1

Предполагая, что Windows вы можете загрузить свою установку с Страница проекта установки Win32 OpenSSL. Вы можете выбрать один для разработки 64-битных окон или для 32-разрядных. Просто запустите настройку, и все будет сделано легко. Каталог установки по умолчанию: C:\OpenSSL-Win32
В создателе Qt, если вы хотите связать библиотеку с вашим проектом, вы можете просто добавить эту строку в ваш .pro файл (файл проекта):

LIBS += -L/path/to -llibname

Итак, вот что мы делаем для этой библиотеки (например, для ссылки ubsec.lib)

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

Обратите внимание на -L и -l. См. этот вопрос. Вам даже не нужно указывать .lib в конце имени библиотеки.

Чтобы включить файлы .h, добавьте эту строку в ваш .pro файл:

INCLUDEPATH += C:/OpenSSL-Win32/include

после этого вы можете включить такой файл:

#include <openssl/aes.h>

Ответ 3

Я работал над Win 7 (32) с Qt5.5, и не ответы на эти ответы работали для меня.
Поэтому я просто хочу поделиться решением, которое наконец-то сработало:

1. У меня установлен OpenSSL в C:\OpenSSL-Win32
2. В c:\OpenSSL-Win32\MinGW есть два файла библиотеки:
 libeay32.a & ssleay32.a
3. Я сделал копию каждого из них, переименованного в расширения:
 libeay32.a -> libeay32.lib & ssleay32.a -> ssleay32.lib
4. Я связал библиотеки в моем файле .pro таким образом:
 LIBS += -LC:/OpenSSL-Win32/lib/MinGW -llibeay32
 LIBS += -LC:/OpenSSL-Win32/lib/MinGW -lssleay32
 INCLUDEPATH += C:/OpenSSL-Win32/include
5. Я скопировал 3.dll файлы из C:\OpenSSL-Win32:
 (libeay32.dll, libssl32.dll, ssleay32.dll)
 в мою папку для создания/отладки:
 (Сборка-XXXXX-Desktop_Qt_5_5_1_MSVC2012_32bit-Debug/отладка)

Надеюсь, это поможет.

Ответ 4

если вы находитесь на win7, а ваша версия qt - mingw, и вы устанавливаете openssl из http://slproweb.com/products/Win32OpenSSL.html, убедитесь, что ваша библиотека должна быть в OpenSSL-Win32/lib/MinGW и добавьте "lib" перед libeay32.a и ssleay32.a.

Ответ 5

Если вы используете cmake как систему сборки для своего проекта, вы можете включить FindOpenSSL.cmake следующим образом:

#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} требуется в системах Linux, чтобы избежать ошибок времени соединения, таких как "символ dlopen не найден...". На окнах он стал пустым.

Если каталог openssl не является стандартным, то вы должны предоставить OPENSSL_ROOT_DIR до cmake, например. добавить set(OPENSSL_ROOT_DIR "C:/msys64/mingw32") до include или указать -DOPENSSL_ROOT_DIR:PATH=C:/msys64/mingw32 в cmake исполняемый файл (в разделе "Проекты" → "Настройки сборки" → вкладка "CMake" ).