Qt 编译使用Quazip库

1. 编译zlib

quazip库是基于Qt的压缩解压库,使对zlib库的封装。因此要使用quazip库就需要先编译zlib。

下载zlib

为了在Qt中使用,编译环境统一使用Qt的MinGW工具链。
解压源码,打开Qt的MinGW命令行控制台。

make -f ./win32/Makefile.gcc

在这里插入图片描述

复制出zconf.hzlib.hzlib1.dll 备用:

在这里插入图片描述

2. 编译quazip

这里搞了半天才搞定。网上教程都是旧版本的,使用的是 .pro 文件,qmake进行编译。最新版本已经不使用qmake进行编译了。由于我前面运行命令出错,导致我的 CMakeLists.txt 文件被替换了内容,然后怎么编译都不成功。文件内容替换后居然还是编译整个项目,只不过是编译可执行文件。但是由于去少一些环境设置,导致链接时找不到Qt与相关的库。后面重新解压了源码文件才编译通过。

下载源码

主页有编译教程。真的非常简单,只有两个命令就搞定了,失误导致我浪费了很多时间。一定使用Qt的MinGW工具链,不要使用msys2或者自己安装的编译工具链,否则会编译不过。另外cmake最好也安装windows版的,不要使用msys2中的。

解压源码,进入到源码目录。然后照着网关主页的教程,进行本地化的修改执行。

mkdir build; cd build
cmake -S ../ -B ./ -D QUAZIP_QT_MAJOR_VERSION=5 -G "MinGW Makefiles"

在这里插入图片描述

命令执行报错了。cmake会去找到zlib库。但是由于zlib没有在cmake的搜索路径中,因此找不到而报错。由于上面zlib不是使用cmake编译的,因此在这里,修改quazip中的 CMakeLists.txt 文件,屏蔽掉这个问题,并添加zlib的搜索路径。

注释掉源码目录CMakeLists.txt中的关于搜索zlib相关的命令:

在这里插入图片描述

再修改 quazip 目录下的 CMakeLists.txt 直接添加zlib库:

link_directories("D:\\library\\lib_zlib\\lib")

add_library(${
    
    QUAZIP_LIB_TARGET_NAME} ${
    
    QUAZIP_SOURCES})
add_library(QuaZip::QuaZip ALIAS ${
    
    QUAZIP_LIB_TARGET_NAME})

target_link_libraries(${
    
    QUAZIP_LIB_TARGET_NAME} zlib1.dll)

再次生成,依然报错。bzip2下载不下来。

在这里插入图片描述

重试,还是下载不下来,但是没有错误报出来。

在这里插入图片描述

既然没有错那就先不管,直接编译:

cmake --build . -j20

在这里插入图片描述

生成动态库成功。虽然前面有问题。前面无法下载bzip2的问题,可以手动下载,然后再编译。这里我就不管了。这里将动态库和头文件

复制出 libquazip1-qt5.dll 和所有头文件备用。

在这里插入图片描述

3. 添加到Qt工程

在我们得工程中添加相关的代码。

#include "mainwindow.h"
#include <QApplication>
#include <libquazip/include/JlCompress.h>

int main(int argc, char *argv[])
{
    
    
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    JlCompress::compressDir("D:\\library\\zlib.zip", "D:\\library\\lib_zlib");
    return a.exec();
}

.pro 文件中添加头文件路径和动态库,添加我们前面生成的库文件的路径,这里只需要添加quazip库就行了。

LIBS += -L$$PWD/libquazip/ -lquazip1-qt5
INCLUDEPATH += $$PWD/libquazip

然后编译,就没什么问题了。但是运行的时候,会直接挂掉,原因是找不到动态库。因为我这里只支持动态链接,所以需要将前面编译生成的两个动态库文件放到运行目录下面去。Qt Creator调试运行目录是在类似 build-Onekey_Pi-Desktop_Qt_5_12_12_MinGW_32_bit-Debug

zlib1.dlllibquazip1-qt5.dll 两个动态库都放到这个目录下,然后调试运行。程序就能够正常起来,否则,缺一都是会直接导致程序启动退出。

运行后,压缩成功:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/duapple/article/details/131117426