Не уверен, сколько людей используют QuaZip для открытия и работы с zip-файлами в Qt, но я пытаюсь открыть zip-файл, используя следующий код:
#include "quazip/JlCompress.h"
#include <QDebug>
#include <QtWidgets>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ConnectActions();
...
}
bool MainWindow::LoadArchive(const QString &filename)
{
//qDebug() << "STUB: LoadArchive()";
QuaZip archive_handle(filename);
//Attempt to open the file, return false and display error message
if(!archive_handle.open(QuaZip::mdUnzip)) {
qDebug() << "Archive does not exist or is damaged!";
return false;
}
//Perform some sort of operation, such as loading the images out of the archive
//tidy up
archive_handle.close();
return true;
}
Это дает мне ошибку:
QIODevice::open: File access not specified
Archive does not exist or is damaged!
***Error in `/home/adrian/Development/build-CinemaStrips-Desktop_Qt_5_3_GCC_64bit-Debug/CinemaStrips': free(): invalid pointer: 0x00007f2c4b709ce0***
The program has unexpectedly finished.
Я не могу сказать, пропустил ли я шаг, так как инструкции API очень просты, и я дословно следовал им в своем коде. Как видите, я использую Qt5; QuaZip работает только с 4? Наконец, есть ли другой способ работы с zip-файлами в Qt, с которым у кого-нибудь есть опыт?
Спасибо!
Чтобы ответить на мой собственный вопрос, может показаться, что моя проблема была связана с относительным разрешением пути к моей библиотеке квазипа в моем файле проекта Qt. При указании библиотеки в .pro с использованием относительного пути, нужно помнить, что Qt разрешает относительные пути к библиотекам из местоположения двоичного файла при его запуске. Я, с другой стороны, определял местоположение библиотеки с точки зрения местоположения .pro (и моей кодовой базы). После исправления мои ошибки были устранены.