Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > Qt и ZipArchive |
Автор: ecspertiza 18.3.2009, 13:33 | ||||||||
вот потребовалось встроить в программу работу с архивами, нашёл тут на форуме похожую тему http://forum.vingrad.ru/topic-193597.html, решил поюзать ZipArchive, стало быть скачал собрал как написано в мануале
всё собралось, теперь пробую добавить в софт
в проекте дописываю
а компилятор мне нигодяй отвечает
пол дня бьюсь нашёл похожую тему но она на французом вроде я в нём не силён http://forum.qtfr.org/viewtopic.php?id=4327 кто знает в чём грабли? |
Автор: SABROG 18.3.2009, 13:37 | ||
Наверно в этом:
|
Автор: ecspertiza 18.3.2009, 13:47 | ||
то есть если я всё правильно понял то в моём случае это будет
На это он говорит что неможет найти -lziparch а в катологе C:/msys/1.0/lib/ он есть |
Автор: Vaulter 18.3.2009, 14:16 | ||
|
Автор: ecspertiza 18.3.2009, 14:32 |
Так тоже пробовал выводит тоже что и в первом посте. |
Автор: ecspertiza 18.3.2009, 17:24 |
Или может знает кто хороший способ как работать с архивами (ZIP)? |
Автор: SABROG 18.3.2009, 18:00 |
Я не работал, но вот еще такое есть http://quazip.sourceforge.net/index.html |
Автор: Arch1S 18.3.2009, 18:22 |
SABROG, ух ты, спасибо раньше работал с libzip, вроде всё работала |
Автор: Acer 18.3.2009, 20:39 |
ecspertiza, а ты "LIBS +=..." писал в Makefile или в *.pro файл? |
Автор: SABROG 18.3.2009, 21:19 | ||||
Кстати я только после своего поста заметил, что пути уже прописаны, это видно в куске где undefined reference идет. У меня есть еще подозрение, что могло быть забыто что-то другое подключиться. А может проблема в том, что программа не в MSYS собирается и виндовая консоль не может разобрать линуксовые пути. Узнал, что у QuaZip/minizip есть проблема, он не поддерживает поддиректории в zip архивах. Есть еще такой проект http://zziplib.sourceforge.net/ Тока он не собирается...
|
Автор: just_geek 18.3.2009, 22:25 | ||
Эм, вообщем в Qt 4.5.0 есть ZipReader. Только вот...
qzip.cpp, qzipreader_p.h, qzipwriter_p.h |
Автор: SABROG 19.3.2009, 00:41 |
Я так понял они его для Open Document Format сделали. Пока у них используется только QZipWriter, есть еще QZipReader, но он висит без дела. |
Автор: ecspertiza 19.3.2009, 10:27 |
SABROG, спасибо QuaZIP то что доктор прописал))) |
Автор: ecspertiza 19.3.2009, 13:42 | ||
а ктонибудь использовал QuaZIP, для приложений со статической сборкой? при динамической сборке всё в порядке, а когда собираю статично приложение он мне пишет
QuaZIP пробовал тоже статично собирать, собирается нормально но ответ компилятора при сборке приложения тот же. |
Автор: SABROG 20.3.2009, 15:05 |
В общем я развил тему классов QZipReader и QZipWriter в своем блоге: http://vingrad.ru/blogs/sabrog/2009/03/20/qt-45-rabota-s-zip-arhivami/ |
Автор: null56 26.3.2009, 15:52 |
Хотел вот чего спросить.... 1) С какими вообще архиваторами можно заставить работать qt или у него свои методы сжатия, через этот QZipReader?... просто у меня еще не 4,5 я не читал про них.... 2) Можно ли с помощью этих зиперов сжимать и разживать информацию не из файла в файл, а осущесвлять это все в памяти.... запись на диск мне совсем не нужна? Заранее благодарен |
Автор: just_geek 26.3.2009, 15:59 |
Ну вообще-то есть функции qCompress & qUncompress (используют zlib). |
Автор: null56 26.3.2009, 16:03 |
just_geek, спасибо..... ну и как жмет, хорошо? |
Автор: just_geek 26.3.2009, 16:12 |
ну даже не знаю ![]() |
Автор: SABROG 26.3.2009, 23:04 | ||
QZipWriter/QZipReader работает на основе библиотеки zlib. Разница между zlib и zip только в заголовке с дополнительной информацией. Если тебя не интересует загрузка и запись zip файлов, то изучи файлы: qzip.cpp qzipreader_p.h qzipwriter_p.h Там показано как работать с чистыми данными в оперативной памяти. |
Автор: ecspertiza 3.4.2009, 11:53 |
не-а не удалось остановился на динамике, причем если собирать статически пример который вместе с QuaZIP то всё нормально а в приложении не катит ![]() |
Автор: mosg 7.4.2009, 15:33 | ||
А как с русским? Я пока тоже остановился на shared'е ... Исходники к своему проекту добавил - все работает, но есть две проблемы: 1) не понимает русские названия (точнее коверкает) - зы: каюсь, в код глубже ещё не заглядывал 2) при архивировании папти test, которая лежит в той же папке, что и сам EXE'шник, путь в архив пишется абсолютный! :( вместо относительного ... |
Автор: mosg 7.4.2009, 16:43 | ||||
Исправилось: всего-то надо было после конструктора QuaZip добавить код:
|
Автор: mosg 9.4.2009, 14:40 | ||
Я сделал немного хитро: просто добавил в свою программу исходники как QuaZIP'а, так и zlib'а - и всё статически пашет! ![]() Всем советую! ![]() |
Автор: spyswamp 20.11.2012, 15:03 | ||||||||
Пардон за поднятие некропоста, но кто-нибудь имел позитивный опыт использования QZipReader/QZipWriter? Из сорцов Qt 4.7.4 выдернул qzipreader_p.h, qzipwriter_p.h, qzip.cpp и нужный ему zlib из 3rdparty. Для подключения к своему проекту сделал qzip.pri следующего содержания:
Подключаю ее к *.pro файлу так:
Далее в некоем *.cpp пишу:
Получаю следующую петрушку:
Спрашивается, с какого перепугу, если qzip.cpp подключен через qzip.pri? Т.е. если тупо в *.pro добавить qzip.cpp, то ругается на повторное определение. |
Автор: bsa 20.11.2012, 15:42 |
spyswamp, посмотри на предмет #ifdef/#endif внутри qzip.cpp. |
Автор: spyswamp 20.11.2012, 17:16 | ||||
bsa, да там, вроде, все предельно: В qzip.cpp:
В qzipreader_h.h:
Пробовал комментить QT_NO_TEXTODFWRITER и там, и там - толку ноль. |
Автор: spyswamp 21.11.2012, 09:32 |
Убрал qzip.pri, прописал INCLUDEPATH до qzip в проекте, заинклудил только qzip.cpp, clean/rebuild - заработало. |