Russian Qt Forum
Ноябрь 21, 2024, 22:42 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Инструкция по сборке QuaZIP (ZIP/UNZIP package)  (Прочитано 10325 раз)
Владислав
Гость
« : Октябрь 22, 2013, 14:02 »

Надеюсь моя инструкция поможет научиться собирать и использовать QuaZIP ZIP/UNZIP package.

Она сделана на скорую руку, и для себя, но на мой взгляд, приоткроет путь для движения.

http://turbobit.net/5ylfl3zozptr.html - выложил решение VS2008 с проверочным проектом и проектами библиотек QuaZIP и zlib.

Инструкция по сборке QuaZIP - Qt/C++ wrapper for ZIP/UNZIP package (http://quazip.sourceforge.net/)
для IDE VS2008
Владислав Хохряков 2014 г.

1) Собрать zlib:
- Скачать и распаковать zlib-1.2.5:
источник: http://www.winimage.com/zLibDll/index.html
файл: Current version (1.2.5): zlib125.zip sources of zlib
- Скачать и установить gui-CMake
источник: http://www.cmake.org/cmake/resources/software.html
файл: Windows (Win32 Installer) cmake-2.8.12-win32-x86.exe
- В  source code выбрать источник D:/qzip/zlib-1.2.5
- Создать пустую директорию для выодных файлов D:/qzip/zlib-1.2.5/pc_vs2008
- В  were to buind выбрать директорию выодных файлов D:/qzip/zlib-1.2.5/pc_vs2008
- Нажать Configure, выбрать IDE-VS2008-к примеру и SDK
- если попросит CMake Error at CMakeLists.txt:65 (message):
  You must remove D:/qzip/Test2/zlib-1.2.5/zconf.h from the source tree., то удалить zconf.h
- После успешного результата надать Generate, и в .../pc_vs2008 окажутся файлы проекта для IDE

(например для VS2008)
-  В IDE (например для VS2008) открыть проект из .../pc_vs2008, выбрать dll или lib и собрать его

2) Собрать quazip:
скачать последнюю версию (http://sourceforge.net/projects/quazip/)  quazip-0-5-1
собрать так-же как и zlib
3) В VS2008 cделать решение с проектом testzip QT и подключить к этому решению проекты quazip и zlib
4) Настроить проект zlib как .lib

5) Проверить работу можно используя следующий код (main.cpp в  testzip):

#include "testzip.h"
#include <QtGui/QApplication>
#include <QFile>


#include <quazip/quazip.h>
#include <quazip/QuaZipFile.h>
#include <QDebug>

int main(int argc, char *argv[])
{
   QApplication a(argc, argv);
   QuaZip zip("d:\\02a.zip");
   zip.open(QuaZip::mdUnzip);

   QuaZipFile file(&zip);

   for(bool f=zip.goToFirstFile(); f; f=zip.goToNextFile()) {
      file.open(QIODevice::ReadOnly);
      //same functionality as QIODevice::readData() -- data is a char*, maxSize is qint64
      //file.readData(data.data(),data.size());
      //static_cast<QIODevice*>(&file)->readData(data2,200);
      //do something with the data
      qDebug() << file.getActualFileName();
      file.close();
   }

   zip.close();
   return a.exec();
}
« Последнее редактирование: Октябрь 22, 2013, 14:26 от Владислав » Записан
Владислав
Гость
« Ответ #1 : Октябрь 22, 2013, 14:27 »

Для пропаганды POCO:

Конечно, для ZIP/UNZIP можно использовать, например, красивый и удобный фреймворк POCO (http://pocoproject.org/docs/ZipUserGuide.html), но, если проект QT, то используя QuaZIP не нужно тратить время на  собственные обёртки "не родных" классов.
Записан
sergek
Гипер активный житель
*****
Offline Offline

Сообщений: 872


Мы должны приносить пользу людям.


Просмотр профиля
« Ответ #2 : Октябрь 22, 2013, 16:41 »

Для mingw или в linux есть особенности?
Записан

Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
navrocky
Гипер активный житель
*****
Offline Offline

Сообщений: 817


Погроммист


Просмотр профиля
« Ответ #3 : Октябрь 23, 2013, 10:42 »

Под linux вообще особенностей нет, ставишь devel пакет из репы.

С mingw всё то же самое, что и с MSVC.

Насколько я помню, вроде бы можно использовать, zlib, идущий в комплекте с Qt. Я вообще воткнул исходники QuaZip к себе в cmake проект, и было достаточно сделать add_subdirectory(quazip). Нормально собирается под linux, mac, windows.

Код:
# Use system zlib on unix and Qt ZLIB on Windows
IF(UNIX)
find_package(ZLIB REQUIRED)
ELSE(UNIX)
SET(ZLIB_INCLUDE_DIRS "${QT_ROOT}/src/3rdparty/zlib" CACHE STRING "Path to ZLIB headers of Qt")
SET(ZLIB_LIBRARIES "")
IF(NOT EXISTS "${ZLIB_INCLUDE_DIRS}/zlib.h")
MESSAGE("Please specify a valid zlib include dir")
ENDIF(NOT EXISTS "${ZLIB_INCLUDE_DIRS}/zlib.h")
ENDIF(UNIX)
Записан

Гугль в помощь
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.114 секунд. Запросов: 23.