不确定有多少人使用QuaZip在Qt中打开和使用zip文件,但我正在尝试使用以下代码打开一个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吗?最后,有没有其他方法可以在Qt中使用任何人都有经验的zip文件?
谢谢!
答案 0 :(得分:0)
要回答我自己的问题,我的问题似乎是我的Qt项目文件中的quazip库的相对路径解析之一。使用相对路径在.pro中指定库时,必须记住Qt在运行时从二进制位置解析相对库路径。另一方面,我从.pro(和我的代码库)位置的角度指定了库的位置。一旦纠正,我的错误就会得到缓解。