QuaZip源码编译及其编解码功能的测试

 参考文献: http://my.oschina.net/coda/blog?disp=2&p=1&catalog=0

Qt版本:qt-opensource-windows-x86-mingw491_opengl-5.4.1.exe

1、下载源码地址: http://sourceforge.net/projects/quazip/
2、 向Quazip中的quazip项目的.pri文件中添加QT中Zlib库的路径: INCLUDEPATH += "D:\Qt5.4.1\5.4\mingw491_32\ include\QtZlib"
3、对quazip执行“构建“,然后对Quazip大项目执行”qmake“,生成.dll和.a文件,再加上项目中的quazip头文件
由于是使用mingw,使用的是gcc for window编译器,其得到的静态库是以.a为后缀的,如果要的.lib为后缀的静态库需要安装msvc版本的Qt。
下载Qt版本:qt-opensource-windows-x86-msvc2010_opengl-5.4.0.exe,需要在之前安装vs2010集成开发环境,然后编译器就不用再额外安装。

使用:源码项目中qztest项目,记住更换Qt版本后,需要重新生成quazip的两个库文件,否则会出错。对于在直接运行.exe可执行文件会出现QtCore,dll缺失的情况,这里就要win7系统对其设置PATH路径,一个是D:\Qt\Qt5.4.0\5.4\msvc2010_opengl\bin,一个是D:\Qt\Qt5.4.0\Tools\QtCreator\bin
怎么使用qztest项目调用前面编译的两个库实现编解码操作,如下所示,对于怎么将需要的第三方文件添加到项目中,参考文献中有说明,自己也是根据他的思路来的。文件添加完成后,继续下面操作:
1、在pro文件中添加:
win32:CONFIG(release, debug|release): {
LIBS += -L$$PWD/3rdparty/quazip/lib/ -lquazip
LIBS += -L$$PWD/3rdparty/quazip/bin/ -lquazip
}
else:win32:CONFIG(debug, debug|release): {
LIBS += -L$$PWD/3rdparty/quazip/lib/ -lquazip
LIBS += -L$$PWD/3rdparty/quazip/bin/ -lquazip
}
#else:unix: LIBS += -L$$OUT_PWD/../quazip/ -lquazip
 
  
INCLUDEPATH += $$PWD/3rdparty/quazip/include
DEPENDPATH += $$PWD/3rdparty/quazip/include
INCLUDEPATH += "D:\Qt\Qt5.4.0\5.4\msvc2010_opengl\include\QtZlib"
#INCLUDEPATH += $$PWD/..
#DEPENDPATH += $$PWD/../quazip

2、第三方文件则根据上述文献方法放在项目目录下。

顺便给出一个解压程序,专门针对zip的压缩包:
 
  
bool Extract(const QString& in_file_path, const QString& out_file_path)
{
    QuaZip archive(in_file_path);
    if (!archive.open(QuaZip::mdUnzip))
        return false;
 
  
    QString path = out_file_path;
    if (!path.endsWith("/") && !out_file_path.endsWith("\\"))
        path += "/";
 
  
    QDir dir(out_file_path);
    if (!dir.exists())
        dir.mkpath(out_file_path);
 
  
    for( bool f = archive.goToFirstFile(); f; f = archive.goToNextFile() )
    {
        QString filePath = archive.getCurrentFileName();
        QuaZipFile zFile(archive.getZipName(), filePath);
        zFile.open(QIODevice::ReadOnly );
        QByteArray ba = zFile.readAll();
        zFile.close();
 
  
        if (filePath.endsWith("/"))
        {
            dir.mkpath(filePath);
        }
        else
        {
            QFile dstFile(path + filePath);
            if (!dstFile.open(QIODevice::WriteOnly))
                return false;
            dstFile.write(ba);
            dstFile.close();
        }
    }
 
  
    return true;
}
 
  
使用在main函数中:
添加语句:Extract("f:/workspace/11.zip", "f:/" );解压
 
  
添加语句:bool b_isTrue = JlCompress::compressDir(QString("f:/tong.zip"), QString("f:/workspace"), true);//压缩,记住必须在release版本中,不能再debug版本运行。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱技术爱生活

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值