Russian Qt Forum

Qt => Дополнительные компоненты => Тема начата: Dark Jedi от Июнь 24, 2016, 18:29



Название: Подключение QuaZip
Отправлено: Dark Jedi от Июнь 24, 2016, 18:29
Здравствуйте! Уже два дня мучаюсь с подключением библиотеки QuaZip. Вот zlib подключается и работает нормально, а QuaZip сначала пытался подключать через pri файлы в папке библиотеки, потом по вот этой инструкции: http://www.prog.org.ru/topic_25880_0.html . В первом случае все время выдавались ошибки типа undefined reference to _imp_набор_букв_и_цифр. Во втором случае, скачанный CMake, выдавал ошибки на мою установку компилировать под mingw makefiles. Как я понял, это из-за того что он не находит компилятор mingw, поскольку под Visual Studio оно компилирует без ошибок (но мне нужно именно под mingw). Еще где-то  видел, что писали "зачем этот cmake, если qmake более родной и удобный", но это не вариант ибо мои знания о qmake заканчиваются на нажатии кнопки "Запустить qmake" в меню "Сборка" в Qt. Объясните пожалуйста как установить эту библиотеку нормально (ну и, по возможности, в дополнение, как работать с qmake).


Название: Re: Подключение QuaZip
Отправлено: Kurles от Июнь 26, 2016, 21:12
У меня подключено так:

в .pro файле приложения, в инклюде поменять путь до расположения файла quazip.pri библиотеки.
Код:
#QuaZip support

DEFINES += QUAZIP_STATIC
include($$PWD/../3rdparty/quazip/quazip.pri)
LIBS += -lz

#end QuaZip support


Название: Re: Подключение QuaZip
Отправлено: Dark Jedi от Июнь 27, 2016, 09:32
Сделал как вы сказали, в итоге сам класс QuaZip стал виден в файле, где использую его, но почему-то не находятся конструктор и деструктор класса (undefined reference ...), хотя нужные файлы подключены (quazip.h как минимум). И при сборке qmake выдает ошибку "Extra characters after test expression." в файле quazip.pri на строке после подключения всех header'ов (просто пустая строка между подключением header'ов и source файлов), но при компиляции компилятор не обращает внимания на эту ошибку, даже не смотря на то, что это ошибка, а не предупреждение.


Название: Quazip работает, осталось разобраться с zlib
Отправлено: DarkHobbit от Май 08, 2017, 13:07
У меня подключено так: ...
Код:
#QuaZip support

DEFINES += QUAZIP_STATIC
include($$PWD/../3rdparty/quazip/quazip.pri)
LIBS += -lz

#end QuaZip support
Я делал примерно так же. Осталась проблема сказать проекту, где лежат включаемые файлы от zlib (zlib.h и что-то ещё). В линуксе с этим проблем нет, а вот для Windows пришлось городить костыль: включить абсолютный путь к zlib в INCLUDEPATH. Программа собралась, QuaZip работает и вытаскивает всё, что мне нужно, но ясно, что это страшенный костыль, который будет работать только на одной машине.

Есть ли более элегантное решение? Пока из альтернатив вижу только вариант затащить в 3rdpaty ещё и сам zlib и попробовать прикомпоновать статически и его, но я бы не назвал этот вариант элегантным :(


Название: Re: Quazip работает, осталось разобраться с zlib
Отправлено: Alex Custov от Май 08, 2017, 14:29
Есть ли более элегантное решение? Пока из альтернатив вижу только вариант затащить в 3rdpaty ещё и сам zlib и попробовать прикомпоновать статически и его, но я бы не назвал этот вариант элегантным :(

Это же Windows. Если хочешь сторонние библиотеки - таскай их с собой.


Название: Re: Quazip работает, осталось разобраться с zlib
Отправлено: DarkHobbit от Май 20, 2017, 09:58
Это же Windows. Если хочешь сторонние библиотеки - таскай их с собой.
Угу, и нужны-то они только под одну платформу, и обновлять, если что, геморройнее...
В случае zlib ситуация осложняется тем, что Qt её _уже_ таскает с собой, соответственно, плодить сущности решительно не хочется. Поскольку под винду я делаю статическую сборку Qt, я исхитрился: абсолютный путь прописал не абы куда, а к каталогу, где zlib лежит как 3d-party библиотека. То есть инклуд гарантированно соответствует самой библиотеке. Всё замечательно, но:
  • Проект открытый, кому-то может захотеться сделать и динамическую виндосборку. Ему точно придётся резать файл проекта "под себя";
  • Даже при статической сборке абсолютный путь зависит от версии Qt, от диска...