как добавить zlib к существующей установке qt

Как я могу добавить zlib в существующую установку Qt. Я новичок в этом, поэтому, пожалуйста, дайте мне подробное описание! Заранее спасибо за помощь!


person defiant    schedule 23.10.2010    source источник


Ответы (4)


zlib содержится в основных библиотеках Qt. Если вы хотите использовать функции zlib в программе Qt, вам нужно только включить zlib.h, который находится в src / 3rdparty / zlib. См., Например, реализация QByteArray в src / corelib / tools.

Если вы хотите использовать quazip, просто добавьте библиотеку в свой проект. Он основан на библиотеках Qt. Позаботьтесь о создании правильной библиотеки qyazip, соответствующей вашей установке Qt.

Чтобы получить правильный путь включения, добавьте в файл проекта следующую строку:

INCLUDEPATH += $$[QT_INSTALL_PREFIX]/src/3rdparty/zlib

Для Qt5 см. Комментарий Торбьёрна: достаточно использовать #include <QtZlib/zlib.h>.

person hmuelner    schedule 25.10.2010
comment
Спасибо за совет. У меня аналогичная проблема, и добавление zlib указанного каталога в INCLUDEDIRS делает компиляцию нормой. До этапа связывания. Линкер не знает, где искать zlib, на который можно ссылаться, и я тоже. Пожалуйста, помогите. - person Septagram; 16.12.2010
comment
Чтобы вам не приходилось связываться с zlib, функции zlib являются частью QtCore4.dll. - person hmuelner; 30.12.2011
comment
Начиная с Qt 5, этот каталог обычно недоступен. К счастью, эта строка также больше не нужна, поскольку вместо нее можно включить zlib.h следующим образом: #include <QtZlib/zlib.h> - person Thorbjørn Lindeijer; 19.01.2014
comment
Ударившись головой об этом, я могу поручиться, что ответ Торбьёрна сработал. VS2010 и Qt 5.2.0. - person Rob Winchester; 21.01.2014
comment
В аналогичном Вопросе есть совершенно другой ответ. Вам вообще не следует использовать внутренний zlib qt: stackoverflow.com/questions/23989823/ - person transistor; 29.04.2015

Текущий ответ действителен только для Qt4. Начиная с Qt5 файл заголовка zlib хранится в другом каталоге. Используя свойство qmake QT_INSTALL_HEADERS, вы можете добавить в свой .pro файл:

INCLUDEPATH += $$[QT_INSTALL_HEADERS]/QtZlib

Это работает, например, для сборки quazip, если вы добавите его в quazip.pro

Свойство $$[QT_INSTALL_HEADERS] указывает на QTDIR/qtbase/include/, внутри которого находится QtZlib / zlib.h.

Не меняя includepath, вы должны изменить каждый include-оператор на #include <QtZlib/zlib.h>, как прокомментировал Thorbjørn.

person Johannes Munk    schedule 17.04.2014

Если вы хотите использовать zlib для сжатия / распаковки, используйте qCompress / qUncompress.

person Community    schedule 23.10.2010
comment
нет, на самом деле я хочу добавить его, чтобы я мог использовать qyazip для сжатия каталогов, так что .. :( - person defiant; 24.10.2010

По крайней мере, некоторые люди здесь хотят собрать Quazip, для которого требуется zlib.

Вот как я сделал это в Windows с помощью quazip 0.4.3.

Сначала в quazip.pro я изменил SUBDIRS, чтобы он содержал только:

SUBDIRS=quazip

Затем я загрузил двоичные файлы zlib и исходный код с: http://www.winimage.com/zLibDll/zlib125dll.zip [двоичные файлы] http://www.winimage.com/zLibDll/zlib125.zip [источник]

обе ссылки взяты с http://zlib.net

Затем в подпапке quazip / quazip.pro я добавил:

INCLUDEPATH += <path to zlib source>

в разделе win32 {} я прокомментировал эту строку:

#  *-msvc*: QMAKE_LFLAGS += /IMPLIB:$$DESTDIR\\quazip.lib

и я изменил строку LIBS на это:

*-msvc*: LIBS += -lzlibwapi -L<path to zlib binaries>/dll32

Я также изменил в zip.c и unzip.c файл

#include "zlib.h"

стать:

#include <zlib.h>

После этого я построил это в режиме Release и получил DLL.

Затем в проект, чтобы использовать это, я добавил следующую конфигурацию:

INCLUDEPATH += <quazip source path>
INCLUDEPATH += <zlib source path>

LIBS += -L<quazip source path>\quazip\release -lquazip

И это работает и работает, но только в режиме выпуска для тестового приложения. В режиме отладки я получаю ошибки утверждения, и он не работает.

person Emmanuel Touzery    schedule 29.12.2011