Инструкция установки openSSL на win.
- Переходим по ссылке http://slproweb.com/products/Win32OpenSSL.html
- Качаем не лайт версию (32 бит пробовал).
-
Во время установки выбираем пункт:
the openssl binaries (/bin) directory / sistem files
-
После установки добавляем в переменные среды в переменную
PATH
:C:\OpenSSL-Win32\lib
-
В .pro-файл проекта на QT добавляем строчку:
INCLUDEPATH += C:/OpenSSL-Win32/include
-
В main.cpp пробуем для примера написать строчку :
#include <openssl/aes.h>
и скомпилировать. - Готово. Ф-ции видят, но при попытке компиляции вылетает ошибки : undefined reference to `AES_encrypt'
Думал собрать статический qt с вшитым openssl.
На сайте
wiki.qt.io
есть скрипт для PowerShell:
windows-build-qt-static.ps1
. Скрипт автоматически скачивает и устанавливает QT в статической сборке. Вот только мне нужно добавить OpenSSL.
Из изменений скрипта явно нужно заменить старую ссылку скачивания на новую:
// $QtSrcUrl = "http://download.qt-project.org/official_releases/qt/5.3/5.3.0/single/qt-everywhere-opensource-src-5.3.0.7z" // заменить на $QtSrcUrl = "http://download.qt.io/official_releases/qt/5.11/5.11.0/single/qt-everywhere-src-5.11.0.zip"И вопрос что сделать со сборкой тут:
cmd /c "configure.bat -static -debug-and-release -platform win32-g++ -prefix $QtDir ` -qt-zlib -qt-pcre -qt-libpng -qt-libjpeg -qt-freetype -opengl desktop -qt-sql-sqlite` -no-openssl -opensource -confirm-license ` -make libs -nomake tools -nomake examples -nomake tests"заменить -no-openssl заменить на -openssl -I c:\OpenSSL-Win32\include -L c:\OpenSSL-Win32\lib\MinGW .
И что делать с тем что архив ожидался 7z а сейчас он zip? Что нужно сделать с openSSL до запуска скрипта? Установить в системные папки или в папки bin? или ничего не нужно делать?
С этим openssl всё время сплошные головные боли. Дело в том, что новые версии почему-то всё ещё не поддерживаются Qt.
Можете подробнее рассказать что нужно сделать?
Это нужно прописывать в pro файл вашего проекта
В параметрах настройки проекта нужно добавить дополнительный шаг и прописать install в make arguments
А устанавливать в целом openssl надо отсюда: http://slproweb.com/products/Win32OpenSSL.html?
Вам нужна эта либо, чтобы просто была поддержа SSL/HTTPS для сети?
И это тоже можно удалитьТогда вот это не нужно вообще
В целом нужно оттуда... но что-то там сейчас не рабочие сборки для Qt, поэтому пока забудем о них.
По факту библиотеки SSL грузятся в рантайме, если QSslSocket::supportsSsl() выдаёт false значит не совсем правильно прописали пути, куда кидать библиотеку. Она просто не нашлась.
QSslSocket::supportsSsl() -- эту строчка где была подсмотрена для быстрой проверки: подключен ли ssl или нет.
Это строчка вернёт true только в том случае, если прогрузились библиотеки OpenSSL, для проверки киньте библиотеки вручную в build папку где исполняемый файл собирается вашей программы.
Ещё забыл... Это предкомпилированные библиотеки для MSVC-2015. Который 64-х разрядный
а для mingw32 есть что?)
Кажется я напортачил с номеров версии библиотеки. Я к сожалению не могу сейчас проверить под mingw, но если не ошибаюсь, то вам нужна версия 1.0.2 с того сайта, что вы указали в самом начале. 1.1.0 не подходит, она значительно перепилена и заголовочные файлы там отличаются...
Сюда нужно добавить? Что то у меня не собираеться после этого.
да не, я их кидал рядом с exe файлом, который компилируется. А так можно для шага инсталляции в pro файле написать, куда и откуда копировать.
Можно в PRO файле указать путь, откуда и куда копировать.
У нас в проекте для либ так указано
К продолжению темы в QT 5.15.1 появились уже готовые libeay32.dll и ssleay32.dll на машине сборки все работает. На целевую машину в папку с exe подкидываю libeay32.dll и ssleay32.dll результата нет. Можно еще разок подробнее что нужно сделать что бы подцепились эти dll на целевой машине.
К продолжению темы в QT 5.15.1 появились уже готовые libeay32.dll и ssleay32.dll на машине сборки все работает. На целевую машину в папку с exe подкидываю libeay32.dll и ssleay32.dll результата нет. Можно еще разок подробнее что нужно сделать что бы подцепились эти dll на целевой машине.