Qt 编译使用Quazip库

news/2024/12/23 3:59:19/

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 两个动态库都放到这个目录下,然后调试运行。程序就能够正常起来,否则,缺一都是会直接导致程序启动退出。

运行后,压缩成功:

在这里插入图片描述


http://www.ppmy.cn/news/287404.html

相关文章

贪吃蛇(2).2

在updateWithInput() 函数中按a、s、d、w键改变moveDirection 判断游戏结束的条件 #include<stdio.h> #include<stdlib.h> #include<conio.h> #include<windows.h> #define High 20 //游戏画面尺寸 #define Width 30// 全局变量 int moveD…

AMD速龙经典处理器回顾

在CPU这个范畴里&#xff0c;想必大家张口就能说出他们的名字&#xff0c;没错&#xff0c;全球唯有实力的两大CPU生产商&#xff1a;INTEL和AMD。前者出生于1968&#xff0c;后者1969年诞生。那么&#xff0c;今年对于AMD来说是一个特殊的年份&#xff0c;因为它已经走过40年的…

如何看编号识真65纳米双核速龙

以目前市场上最常见的90nm/65W版本Athlon64 X2 3800处理器为例&#xff0c;这款处理器的OPN编号为“ADO3800IAA5CU”。如图标注所示&#xff0c;我们要特别关注处理器OPN编号的前缀部分。 不同的OPN编号前缀代表不同的含义&#xff0c;其中OPN编码前缀为“ADA”的产品为TDP 89W…

十年《文明2》,然后呢?核战争?我说的是然后……

前几天的新闻&#xff0c;想必大家都看到了。玩了10年的《文明2》的记录……咳&#xff0c;跑题了&#xff0c;记得几年前&#xff0c;也有一个类似的“核战争”的话题。 还记得AMD速龙之后直接转型的速龙X2吧&#xff0c;然后是胶水双核之争&#xff0c;然后就是铺天盖地的“…

amd cpu安装osx 10.9.2(同样适应intel构架)

amd cpu安装mac os 10.9.2详细步骤 本人一直在vm中运行mac os&#xff0c;一直运行的版本是mountain lion 10.8.2&#xff0c;一直还行&#xff0c;但是最新的xcode 5.0.2要更新的mac os了&#xff0c;没有办法&#xff0c;本人决定在真机安装最新版的。于是在国外看一些教程&…

龙的战争 Dragon ‘s War

题目描述 Kirito现在被困在一个MMORPG游戏当中&#xff0c;为了离开这个游戏&#xff0c;他现在必须和 条龙进行战斗&#xff0c;Kirito和这 头龙都有一个力量值&#xff0c;用整数表示&#xff0c;Kirito最初的力量值为 。如果在Kirito和第 头龙 的对决当中&#xff0c;Kir…

2.2.2 处理器(CPU)资源

最后更新2021/07/08 处理器资源有两类&#xff1a;物理CPU和虚拟CPU&#xff0c;由于在虚拟化不同层面有不同的解释&#xff0c;因此请先确认其含义。后续如无特别说明&#xff0c;与x86系列对应&#xff0c;CPU即通常说的CPU core&#xff0c;CPU封装即socket&#xff0c;通常…

JavaSE笔记(二)重制版

面向过程篇 前面我们已经认识了Java语言的相关特性&#xff0c;并且已经成功配置好了开发环境&#xff0c;从这节课开始&#xff0c;我们就可以正式进入到Java语言的学习当中了。Java语言是一门面向对象的语言&#xff0c;但是在面向对象之前&#xff0c;我们还得先学会如何面…