f
fryn325 мая 2018 г. 9:50

Установка OpenSSL с QT Windows

Qt, openssl, static qt

Уже неделю не могу сообразить как присоединить openssl к qt.

Инструкция установки openSSL на win.

  1. Переходим по ссылке http://slproweb.com/products/Win32OpenSSL.html
  2. Качаем не лайт версию (32 бит пробовал).
  3. Во время установки выбираем пункт: the openssl binaries (/bin) directory / sistem files
  4. После установки добавляем в переменные среды в переменную PATH : C:\OpenSSL-Win32\lib
  5. В .pro-файл проекта на QT добавляем строчку: INCLUDEPATH += C:/OpenSSL-Win32/include
  6. В main.cpp пробуем для примера написать строчку : #include <openssl/aes.h> и скомпилировать.
  7. Готово. Ф-ции видят, но при попытке компиляции вылетает ошибки : 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? или ничего не нужно делать?
Рекомендуем хостинг TIMEWEB
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.

Вам это нравится? Поделитесь в социальных сетях!

14
Evgenii Legotckoi
  • 25 мая 2018 г. 10:07
  • (ред.)

С этим openssl всё время сплошные головные боли. Дело в том, что новые версии почему-то всё ещё не поддерживаются Qt.

В результате я просто нашёл нужные версии этой библиотеки... и добавил их прямо в проект с указанием пути установки.

CONFIG(release, debug|release): openssl.path = $$OUT_PWD/release
else:CONFIG(debug, debug|release): openssl.path = $$OUT_PWD/debug
openssl.files += $$PWD/../openssl/*.dll

INSTALLS += openssl
соответственно в настройках проекта нужно добавить make arguments -> install

Тогда библиотеки будут кидаться к исполняемому файлу и нормально находиться, конечно в вашем случае нужно написать ваши пути, откуда будете брать либы и куда будете их помещать.

Сами нужные библиотеки можете скачать по этой ссылке
    f
    • 25 мая 2018 г. 10:15

    Можете подробнее рассказать что нужно сделать?

    Скачал libeay32 и ssleay32.
    Что дальше?
    CONFIG(release, debug|release): openssl.path = $$OUT_PWD/release
    else:CONFIG(debug, debug|release): openssl.path = $$OUT_PWD/debug
    openssl.files += $$PWD/../openssl/*.dll
    
    INSTALLS += openssl
    Это что? Куда?
      Evgenii Legotckoi
      • 25 мая 2018 г. 10:20
      • (ред.)

      Это нужно прописывать в pro файл вашего проекта


      openssl.path - указывает куда нужно установить библиотеки, это будет либо build-debug-* либо build-release-*
      opensll.files - это откуда брать библиотеки

      $$OUT_PWD - это каталог сборки будет
      $$PWD - это каталог, где находится сам профайл проекта

      INSTALLS так и оставьте

      В параметрах настройки проекта нужно добавить дополнительный шаг и прописать install в make arguments
        f
        • 25 мая 2018 г. 10:37
        • (ред.)

        А устанавливать в целом openssl надо отсюда: http://slproweb.com/products/Win32OpenSSL.html?

        А .h файлы что с ними делать? прописывать строку: INCLUDEPATH += C:/OpenSSL-Win32/include ?
        Папку openssl скинул на уровень выше чем проект.


        pesokQT.pro
        QT -= gui
        QT += network
        CONFIG += c++11 console
        CONFIG -= app_bundle
        
        DEFINES += QT_DEPRECATED_WARNINGS
        Qt += network
        
        
        SOURCES += main.cpp
        
        INCLUDEPATH += C:/OpenSSL-Win32/include
        
        #LIBS += -LC:\OpenSSL-Win32\lib\MinGW -libssl-1_1 -libcrypto-1_1
        
        
        CONFIG(release, debug|release): openssl.path = $$OUT_PWD/release
        else:CONFIG(debug, debug|release): openssl.path = $$OUT_PWD/debug
        openssl.files += $$PWD/../openssl/*.dll
        
        INSTALLS += openssl
        
        main.cpp
        #include<QCoreApplication>
        #include <QtNetwork/QNetworkAccessManager>
        #include <QtNetwork/QNetworkRequest>
        #include<QtNetwork/QNetworkReply>
        #include <QEventLoop>
        #include <QUrl>
        #include<QFile>
        #include<openssl/aes.h>
        
        int main(int argc, char * argv[])
        {
             QCoreApplication app(argc,argv);
             qDebug() << QSslSocket::supportsSsl();
        
             return 0;
        }
        

        output console:
        false
          Evgenii Legotckoi
          • 25 мая 2018 г. 10:54
          • (ред.)

          Вам нужна эта либо, чтобы просто была поддержа SSL/HTTPS для сети?

          Тогда вот это не нужно вообще

          INCLUDEPATH += C:/OpenSSL-Win32/include
          
          #LIBS += -LC:\OpenSSL-Win32\lib\MinGW -libssl-1_1 -libcrypto-1_1
          И это тоже можно удалить
          #include<openssl/aes.h>
          В целом нужно оттуда... но что-то там сейчас не рабочие сборки для Qt, поэтому пока забудем о них.
          По факту библиотеки SSL грузятся в рантайме, если  QSslSocket::supportsSsl() выдаёт false значит не совсем правильно прописали пути, куда кидать библиотеку. Она просто не нашлась.
            f
            • 25 мая 2018 г. 11:02

            QSslSocket::supportsSsl() -- эту строчка где была подсмотрена для быстрой проверки: подключен ли ssl или нет.

            В целом мне нудно aes шифрование.
            При попытке вызвать какую либо ф-цию из aes.h, пишет ошибку: не находит определения.
              Evgenii Legotckoi
              • 25 мая 2018 г. 11:13

              Это строчка вернёт true только в том случае, если прогрузились библиотеки OpenSSL, для проверки киньте библиотеки вручную в build папку где исполняемый файл собирается вашей программы.


              Что касается заголовочного файла, тот тут уже возможно, что заголовочные не подходит. Те библиотеки версии 3 с чем-то что ли... Я точно не помню.
                Evgenii Legotckoi
                • 25 мая 2018 г. 11:21

                Ещё забыл... Это предкомпилированные библиотеки для MSVC-2015. Который 64-х разрядный

                  f
                  • 25 мая 2018 г. 11:27

                  а для mingw32 есть что?)

                    Evgenii Legotckoi
                    • 25 мая 2018 г. 14:51

                    Кажется я напортачил с номеров версии библиотеки. Я к сожалению не могу сейчас проверить под mingw, но если не ошибаюсь, то вам нужна версия 1.0.2 с того сайта, что вы указали в самом начале. 1.1.0 не подходит, она значительно перепилена и заголовочные файлы там отличаются...


                    Просто установите, и заберите одноимённые библиотеки, как те, что я предложил из своих.
                      Юрий
                      • 11 февраля 2019 г. 11:46


                      Сюда нужно добавить? Что то у меня не собираеться после этого.

                        Evgenii Legotckoi
                        • 12 февраля 2019 г. 1:44

                        да не, я их кидал рядом с exe файлом, который компилируется. А так можно для шага инсталляции в pro файле написать, куда и откуда копировать.

                        Можно в PRO файле указать путь, откуда и куда копировать.

                        У нас в проекте для либ так указано

                        win32 {
                            dlltarget.path = $$PATH_INSTALL_BIN
                        
                            INSTALLS += dlltarget
                        } else {
                            target.path = $$PATH_INSTALL_BIN
                        
                            INSTALLS += target
                        }
                        
                          m
                          • 27 ноября 2020 г. 4:49

                          К продолжению темы в QT 5.15.1 появились уже готовые libeay32.dll и ssleay32.dll на машине сборки все работает. На целевую машину в папку с exe подкидываю libeay32.dll и ssleay32.dll результата нет. Можно еще разок подробнее что нужно сделать что бы подцепились эти dll на целевой машине.

                            m
                            • 30 ноября 2020 г. 13:20

                            К продолжению темы в QT 5.15.1 появились уже готовые libeay32.dll и ssleay32.dll на машине сборки все работает. На целевую машину в папку с exe подкидываю libeay32.dll и ssleay32.dll результата нет. Можно еще разок подробнее что нужно сделать что бы подцепились эти dll на целевой машине.

                              Комментарии

                              Только авторизованные пользователи могут публиковать комментарии.
                              Пожалуйста, авторизуйтесь или зарегистрируйтесь
                              г
                              • ги
                              • 23 апреля 2024 г. 15:51

                              C++ - Тест 005. Структуры и Классы

                              • Результат:41баллов,
                              • Очки рейтинга-8
                              l
                              • laei
                              • 23 апреля 2024 г. 9:19

                              C++ - Тест 004. Указатели, Массивы и Циклы

                              • Результат:10баллов,
                              • Очки рейтинга-10
                              l
                              • laei
                              • 23 апреля 2024 г. 9:17

                              C++ - Тест 003. Условия и циклы

                              • Результат:50баллов,
                              • Очки рейтинга-4
                              Последние комментарии
                              k
                              kmssr8 февраля 2024 г. 18:43
                              Qt Linux - Урок 001. Автозапуск Qt приложения под Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
                              АК
                              Анатолий Кононенко5 февраля 2024 г. 1:50
                              Qt WinAPI - Урок 007. Работаем с ICMP Ping в Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
                              EVA
                              EVA25 декабря 2023 г. 10:30
                              Boost - статическая линковка в CMake проекте под Windows Ошибка LNK1104 часто возникает, когда компоновщик не может найти или открыть файл библиотеки. В вашем случае, это файл libboost_locale-vc142-mt-gd-x64-1_74.lib из библиотеки Boost для C+…
                              J
                              JonnyJo25 декабря 2023 г. 8:38
                              Boost - статическая линковка в CMake проекте под Windows Сделал всё по-как у вас, но выдаёт ошибку [build] LINK : fatal error LNK1104: не удается открыть файл "libboost_locale-vc142-mt-gd-x64-1_74.lib" Хоть убей, не могу понять в чём дел…
                              G
                              Gvozdik18 декабря 2023 г. 21:01
                              Qt/C++ - Урок 056. Подключение библиотеки Boost в Qt для компиляторов MinGW и MSVC Для решения твой проблемы добавь в файл .pro строчку "LIBS += -lws2_32" она решит проблему , лично мне помогло.
                              Сейчас обсуждают на форуме
                              G
                              Gar22 апреля 2024 г. 5:46
                              Clipboard Как скопировать окно целиком в clipb?
                              DA
                              Dr Gangil Academics20 апреля 2024 г. 7:45
                              Unlock Your Aesthetic Potential: Explore MSC in Facial Aesthetics and Cosmetology in India Embark on a transformative journey with an msc in facial aesthetics and cosmetology in india . Delve into the intricate world of beauty and rejuvenation, guided by expert faculty and …
                              a
                              a_vlasov14 апреля 2024 г. 6:41
                              Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Евгений, добрый день! Такой вопрос. Верно ли следующее утверждение: Любое Android-приложение, написанное на Java/Kotlin чисто теоретически (пусть и с большими трудностями) можно написать и на C+…
                              Павел Дорофеев
                              Павел Дорофеев14 апреля 2024 г. 2:35
                              QTableWidget с 2 заголовками Вот тут есть кастомный QTableView с многорядностью проект поддерживается, обращайтесь
                              f
                              fastrex4 апреля 2024 г. 4:47
                              Вернуть старое поведение QComboBox, не менять индекс при resetModel Добрый день! У нас много проектов в которых используется QComboBox, в версии 5.5.1, когда модель испускает сигнал resetModel, currentIndex не менялся. В версии 5.15 при resetModel происходит try…

                              Следите за нами в социальных сетях