QT壓縮和解壓ZIP學習筆記二:編譯quazip 32位和64位dll

一、前言

QuaZIP是使用Qt/C++對ZLIB進行簡單封裝的用於壓縮及解壓縮ZIP的開源庫。適用於多種平臺,利用它可以很方便的將單個或多個文件打包爲zip文件,且打包後的zip文件可以通過其它工具打開。

QuaZIP下載:

https://github.com/stachenov/quazip

ZLIB編譯方法:

https://blog.csdn.net/yxy244/article/details/105024989

編譯小知識:

QT編譯要注意編譯器MinGW和MSVC鏈接上有點不同:

在MSVC下編程,當要使用DLL動態庫文件時,必須要有導入庫.lib文件才能編譯鏈接通過。

在MinGW下編程,既可以與導入庫.lib鏈接,也可以直接與.dll動態庫鏈接。在大多數情況下,.MinGW的導入庫.dll.a文件不起作用,這稱爲Direct linking to a dll技術。

 

二、編譯QuaZIP

1.quazip目錄下新建一個lib文件夾,把編譯好的zlib動態庫和導入庫複製過來,這裏有幾點注意:

(1)如果開發的是32位應用程序,那就複製32位zlib1.dll和lib;開發64位程序就複製64位的dll,編譯32位和64位的zlib方法上面的鏈接有。

(2)如果用MinGW編譯器,那麼前面的編譯知識就知道了,鏈接dll或lib都可以;但是用MSVC編譯器,只能用zdll.lib導入庫,而不能直接用dll。這裏兩個都複製過來,其實只複製lib也可以。

 

2.quazip目錄下新建一個include文件夾,複製zlib的頭文件過來

3.打開quazip工程,在.pro文件文件裏找到win32,在最後添加頭文件和庫文件路徑:

LIBS += -L$$PWD/lib/ -lzdll
INCLUDEPATH += $$PWD/include

注意網上有的教程是鏈接到zlib1.dll,如果這麼寫,一定要用MinGW編譯才能通過的哦。

LIBS += -L$$PWD/lib -lzlib1
INCLUDEPATH += $$PWD/include

 

4. Debug和Release都編譯一下,就會得到quazip的動態庫和它的導入庫了

二、測試例程

1.新建一個QT工程,在工程目錄下新建文件夾lib,複製quazip的導入庫進來

2.工程目錄下新建一個include文件夾,將quazip和zlib的頭文件都複製過來

3. pro文件裏添加頭文件和庫文件路徑:

CONFIG(release, debug|release): LIBS += -L$$PWD/lib -lquazip
CONFIG(debug, debug|release): LIBS += -L$$PWD/lib -lquazipd
INCLUDEPATH += $$PWD/include

4.測試代碼

#include "JlCompress.h"

static bool compressDir(QString fileCompressed, QString dir=QString(), bool recursive = true)

第一個參數fileCompressed表示壓縮後的文件

第二個參數dir表示待壓縮的目錄

第三個參數recursive表示是否遞歸

解壓縮用靜態方法:extractDir

static QStringList extractDir(QString fileCompressed, QString dir=QString())

第一個參數fileCompressed表示待解壓縮的文件

第二個參數表示解壓縮存放的目錄

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "JlCompress.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    JlCompress::compressDir("d:\\test.zip", "d:\\test1"); //壓縮
       JlCompress::extractDir("d:\\test.zip", "d:\\test2");//解壓
}

MainWindow::~MainWindow()
{
    delete ui;
}

5.編譯生成exe,別忘了把quazip、zlib1動態庫複製過來和exe放一起,才能運行哦。

三、注意事項

1.根據你要開發的應用程序,編譯zlib、quazip的32位dll或者64位dll,別搞混了。

2.要注意編譯器MinGW和MSVC上鍊接的區別。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章