目录
一、下载相关资源:
二、编译bit7z64.lib 静态库
三、使用静态库bit7z64.lib
四、成果展示
五、主要代码
一、下载相关资源:
借鉴https://blog.csdn.net/u011718663/article/details/119574759https://blog.csdn.net/u011718663/article/details/119574759
1.1 下载bit7z源码:https://github.com/rikyoz/bit7z
1.2 下载lzma源码:7-Zip - LZMA SDK(软件开发工具包)(英文版)
1.3 下载7z.dll: 7-Zip - 程序下载
(也可以通过百度搜索直接下载7z.dll)
私货:如果嫌麻烦,有已编译好的,可以运行的demo,下载地址:qt7zip压缩解压含进度-QT文档类资源-CSDN下载
二、编译bit7z64.lib 静态库
解压下载的bit7z-master.zip和lzma1805.zip的压缩包,
2.1 将解压lzma1805.zip的如下文件:
2.2 放入解压bit7z-master.zip的如下位置:
2.3 在bit7z-master中找到pro文件,加载编译,就可以编译出bit7z64.lib
三、使用静态库bit7z64.lib
3.1 使用时编译会编译不通过,参考博客末尾处有解决方法:Qt5.12.9编译QuaZip并使用 及 直接调用7z_韭菜钟的博客-CSDN博客
3.2 原博客末尾关键处截图:
我改造了一下,将他们放在同一个目录中: LIBS += -L$$PWD/../lib -lbit7z64 -lOleAut32 -lUser32
四、成果展示
4.1 lib目录中,将window10中的OleAut32.Lib和User32.Lib库拷贝到此lib目录中
4.2 bin64中,可以自己通过windeployqt命令补全环境,或者用开发工具打开源码编译运行
五、主要代码
5.1 封装类ZlibHelper代码
#ifndef ZLIBHELPER_H #define ZLIBHELPER_H #ifndef NIMO_OBS_ZLIB_H #define NIMO_OBS_ZLIB_H #include#include #include #include #include using namespace std; class ZlibHelper : public QObject { Q_OBJECT public: ZlibHelper(); ~ZlibHelper(); void extract(const QString& sZip, const QString& sDir); // 解压 void compress(const QString& sDir, const QString& sZip); // 压缩 private: void callbackProcess(uint64_t size); void callbackFile(wstring filename); void callbackTotal(uint64_t size); wstring stringToWstring_WindowApi(const string &str); string wstringToString_WindowsApi(const wstring &wstr); signals: void sigProgress(uint64_t nValue, uint64_t nTotalSize); void sigProgressFile(QString sFile); private: uint64_t m_nTotalSize; // 压缩前文件夹原始大小 }; #endif #endif // ZLIBHELPER_H
#include "ZlibHelper.h" #include "bit7z.hpp" #include "bit7zlibrary.hpp" #include#include using namespace bit7z; //---------------------------------------------------------------------------- ZlibHelper::ZlibHelper() : m_nTotalSize(0) { } //---------------------------------------------------------------------------- ZlibHelper::~ZlibHelper() { } //---------------------------------------------------------------------------- void ZlibHelper::callbackProcess(uint64_t size) { // double process = ((1.0 * size) / mSize); qDebug()<


