f
May 25, 2018, 7:50 p.m.

Установка 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? или ничего не нужно делать?
We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.
12

С этим 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

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

Скачал 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
Это что? Куда?

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


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

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

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

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

А устанавливать в целом 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

Вам нужна эта либо, чтобы просто была поддержа 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

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

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

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


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

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

f

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

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


Просто установите, и заберите одноимённые библиотеки, как те, что я предложил из своих.
  • Feb. 11, 2019, 10:46 p.m.

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

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

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

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

win32 {
    dlltarget.path = $$PATH_INSTALL_BIN

    INSTALLS += dlltarget
} else {
    target.path = $$PATH_INSTALL_BIN

    INSTALLS += target
}

Comments

Only authorized users can post comments.
Please, Log in or Sign up
Donate

Hello, Dear Users of EVILEG!!!

If the site helped you, then support the development of the site financially, please.

You can do it by following ways:

Thank you, Evgenii Legotckoi

D
Nov. 15, 2019, 10:16 a.m.
Daulet

C ++ - Test 004. Pointers, Arrays and Loops

  • Result:40points,
  • Rating points-8
LP
Nov. 12, 2019, 7:22 p.m.
Lev Parhimovich

C++ - Test 006. Enumerations

  • Result:50points,
  • Rating points-4
LP
Nov. 12, 2019, 6:35 p.m.
Lev Parhimovich

C++ - Test 005. Structures and Classes

  • Result:66points,
  • Rating points-1
Last comments
b
Nov. 9, 2019, 7:28 p.m.
bastonc

спасибо ещё раз. огромное, за уделённое время
b
Nov. 9, 2019, 7:24 p.m.
bastonc

Спасибо Вам большое. Буду изучать.
Nov. 9, 2019, 4:58 p.m.
Evgenij Legotskoj

Добрый день. По первым двум вопросам вы найдёте ответ в этой статье - PyQt5 - Урок 008. Работа с QTableWidget (Обновление урока 006) Что касается последнего вопроса, то я вам…
Nov. 9, 2019, 1:50 p.m.
Evgenij Legotskoj

Как и обещал, вы можете посмотреть новую статью QML - Урок 037. Кастомизация кнопок в QML (Обновление урока 002) . Там же найдёте ссылку на Git репозиторий. Не забудьте поставить звёз…
b
Nov. 8, 2019, 6:40 p.m.
bastonc

Приветствую. Подскажите пожалуйста пару моментов. 1. Как сделать столбец не редактируемый, а остальные ячейки остаются редактируемыми 2. Как оталвливать события двойного клика для реда…
Now discuss on the forum
s
Nov. 15, 2019, 3:54 p.m.
sladkoewka

Добрый день! Подскажите пожалуйста, столкнулся с проблемой смены цвета прогресс бара через QPalette::Highlight. В MainWindow считается переменная температуры девайса. Результат вычисле…
Nov. 15, 2019, 3:06 p.m.
Evgenij Legotskoj

Что это такое Wrngdatalib ? Это namespace ? Скорее всего проблема в том, что те объекты тех классов, которые там присутствуют для обработки xml наследованы от QObject…
Nov. 15, 2019, 2:48 p.m.
Evgenij Legotskoj

Ну собственно поэтому я и сказал, что бесполезное это занятие.
Nov. 15, 2019, 2:27 p.m.
Evgenij Legotskoj

Добрый день. Вот эта статья кажется вполне подходящей к вашему вопросу Install OpenCV 3.4.4 on Ubuntu 16.04 (C++ and Python) Единственное, возможно, что вам потребуется ппра…
Nov. 15, 2019, 2:23 p.m.
Evgenij Legotskoj

Я нашёл решение от разработчиков PyQt5 в списке рассылки. os.environ['QT_QUICK_CONTROLS_STYLE'] = 'Material' Попробуйте его ещё
EVILEG
About
Services
© EVILEG 2015-2019
Recommend hosting TIMEWEB