Russian Qt Forum
Ноябрь 27, 2024, 04:53
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
[решено] zlib
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: [решено] zlib (Прочитано 8980 раз)
sergek
Гипер активный житель
Offline
Сообщений: 872
Мы должны приносить пользу людям.
[решено] zlib
«
:
Март 20, 2010, 15:55 »
Коллеги, подскажите, как правильно в проекте использовать zlib (функции compress и uncompress) - включить эти h-файлы в проект или что?
И поясните, если zlib встроен в Qt, зачем так глубоко прятать zlib.h и zconf.h? Почему их нет в include?
«
Последнее редактирование: Март 21, 2010, 14:13 от tramp_0
»
Записан
Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: zlib
«
Ответ #1 :
Март 20, 2010, 15:59 »
злиб не встроен в qt. Есть 2 варианта - либо qt юзает системный злиб (и тогда ты подключаешь свои хедеры из системы), либо юзает копию в 3rdParty. В этом случае предполагается что ты также будешь таскать с собой свой злиб
Записан
sergek
Гипер активный житель
Offline
Сообщений: 872
Мы должны приносить пользу людям.
Re: zlib
«
Ответ #2 :
Март 20, 2010, 16:18 »
Цитировать
юзает копию в 3rdParty. В этом случае предполагается что ты также будешь таскать с собой свой злиб
Там же исходники. Сама либа где? Я в проекте под SDK Wind подключаю хедер и все работает. Что-то не вкурю..
Цитировать
либо qt юзает системный злиб (и тогда ты подключаешь свои хедеры из системы)
Под Win имеется в виду mingw? Не нашел zlib.h нигде, кроме 3rdParty.
Давайте, переформулирую вопрос. В проекте SDK for Win хочу использовать упомянутые функции zlib. Что надо сделать (1, 2, 3...)?
Записан
Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Авварон
Джедай : наставник для всех
Offline
Сообщений: 3260
Re: zlib
«
Ответ #3 :
Март 20, 2010, 16:31 »
1) собрать злиб из сорцов в папке 3rdParty (уже собранного по ходу нет)
2) взять либу, взять хедер, положить куда-нибудь, где это будет видно программе (например прямо в папки qt), или задать INCLUDEPATH и LIBS
3) собрать программу
вариант к-ый юзают кутешники - они подключают сорцы прямо в проект (и настраивают инклюдпатх на папку в 3drParty) - по крайней мере так собирается жпег-плагин
Записан
sergek
Гипер активный житель
Offline
Сообщений: 872
Мы должны приносить пользу людям.
Re: zlib
«
Ответ #4 :
Март 20, 2010, 16:55 »
Спасибо.
Записан
Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
sergek
Гипер активный житель
Offline
Сообщений: 872
Мы должны приносить пользу людям.
Re: zlib
«
Ответ #5 :
Март 21, 2010, 12:29 »
Поковырялся в форумах, нашел еще один вариант использования zlib - через враппер qCompress(), qUncompress() модуля QtCore (описаны там же, где QByteArray). Для меня это даже удобнее - не надо возиться с выделением памяти под распакованные данные.
Только для совместимости с zlib (а входные данные для меня упакованы zlib, и я готовлю данные для нее же) после qCompress() и перед qUncompress() надо менять порядок следования первых четырех байт (начального блока) данных, содержащих ожидаемую длину распакованных данных, на противоположный.
Правда, я так и не нашел объяснения, почему zlib использует для этого блока порядок little-endian, а враппер - big-endian. Может, кто-нибудь знает?
Записан
Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Akaiten
Гость
Re: zlib
«
Ответ #6 :
Март 22, 2010, 09:47 »
Цитата: Авварон от Март 20, 2010, 15:59
злиб не встроен в qt. Есть 2 варианта - либо qt юзает системный злиб (и тогда ты подключаешь свои хедеры из системы), либо юзает копию в 3rdParty. В этом случае предполагается что ты также будешь таскать с собой свой злиб
по крайней мере под виндой zlib по умолчанию линкуется к QtCore4.dll и все его export-символы доступны, так что для использования zlib требуется только подключить .h файлы. Под маком, например, приходилось использовать -lz для линкера.
Записан
sergek
Гипер активный житель
Offline
Сообщений: 872
Мы должны приносить пользу людям.
Re: [решено] zlib
«
Ответ #7 :
Март 22, 2010, 17:37 »
Цитировать
по крайней мере под виндой zlib по умолчанию линкуется к QtCore4.dll и все его export-символы доступны
Меня тоже это напрягало. Потом, когда почитал про qCompress, вопросы отпали - zlib, конечно, встроена в QtCore, а в документации разработчики не отразили сей факт, поскольку zlib не имеет отношения к Qt.
Правда, из-за этого использование zlib'овских compress и uncompress чревато - ничего не стоит тролям заменить zlib на что-нибудь другое совместимое.
Поэтому я остановился на qCompress/qUncompress. Надеюсь, что вот это не изменится
:
Цитировать
Note: If you want to use this function to uncompress external data compressed using zlib, you first need to prepend four bytes to the byte array that contain the expected length (as an unsigned integer) of the uncompressed data encoded in big-endian order (most significant byte first)
Записан
Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...