如何将zlib添加到现有的qt安装中

def*_*ant 13 c++ qt zlib

如何将zlib添加到Qt的现有安装中.我在这里很新,所以请给我详细说明!感谢您的帮助!

hmu*_*ner 11

zlib包含在核心Qt库中.如果要在Qt程序中使用zlib函数,则只需要包含src/3rdparty/zlib中的zlib.h.参见例如src/corelib/tools中的QByteArray的实现.

如果要使用quazip,只需将库添加到项目中即可.它基于Qt库.注意构建与Qt安装相对应的正确qyazip库.

通过将以下行添加到项目文件中,可以获得正确的包含路径:

INCLUDEPATH += $$[QT_INSTALL_PREFIX]/src/3rdparty/zlib
Run Code Online (Sandbox Code Playgroud)

对于Qt5,请参阅Thorbjørn的评论:它足以使用#include <QtZlib/zlib.h>.

  • 从Qt 5开始,这个目录通常不可用.幸运的是,该行也不再需要,因为zlib.h可以像这样包含:`#include <QtZlib/zlib.h>` (4认同)
  • 感谢您的建议.我有类似的问题,并添加zlib说目录到INCLUDEDIRS使编译正常.直到连接阶段.链接器不知道在哪里寻找zlib链接,我也不知道.请帮助. (2认同)
  • 在对这个问题进行敲击之后,我可以保证Thorbjørn的答案有效.VS2010和Qt 5.2.0. (2认同)

小智 7

如果要使用zlib进行压缩/解压缩,请使用qCompress/qUncompress.


Joh*_*unk 7

目前的答案仅对Qt4有效.从Qt5开始,zlib头文件存储在不同的目录中.使用qmake属性,QT_INSTALL_HEADERS您可以添加到.pro文件:

INCLUDEPATH += $$[QT_INSTALL_HEADERS]/QtZlib

如果你把它添加到quazip.pro,这可以用来建立quazip

该属性$$[QT_INSTALL_HEADERS]指向QTDIR/qtbase/include/QtZlib/zlib.h.

在不更改includepath的情况下,您必须将每个include语句更改#include <QtZlib/zlib.h>为Thorbjørn所评论的.


Emm*_*ery 5

至少这里有些人想要构建 Quazip,这需要 zlib。

以下是我在 Windows 上使用 quazip 0.4.3 执行此操作的方法。

首先在 quazip.pro 中,我将 SUBDIRS 更改为仅包含:

SUBDIRS=quazip
Run Code Online (Sandbox Code Playgroud)

然后我从以下位置下载了 zlib 二进制文件和源代码: http://www.winimage.com/zLibDll/zlib125dll.zip [二进制文件] http://www.winimage.com/zLibDll/zlib125.zip [源代码]

两个链接均来自http://zlib.net

然后在子文件夹 quazip/quazip.pro 中添加:

INCLUDEPATH += <path to zlib source>
Run Code Online (Sandbox Code Playgroud)

在 win32 {} 部分我评论了这一行:

#  *-msvc*: QMAKE_LFLAGS += /IMPLIB:$$DESTDIR\\quazip.lib
Run Code Online (Sandbox Code Playgroud)

我将 LIBS 行修改为:

*-msvc*: LIBS += -lzlibwapi -L<path to zlib binaries>/dll32
Run Code Online (Sandbox Code Playgroud)

我还在zip.c和unzip.c中修改了

#include "zlib.h"
Run Code Online (Sandbox Code Playgroud)

成为:

#include <zlib.h>
Run Code Online (Sandbox Code Playgroud)

之后我将其构建为发布模式并获得了 DLL。

然后在项目中使用它,我添加了以下配置:

INCLUDEPATH += <quazip source path>
INCLUDEPATH += <zlib source path>

LIBS += -L<quazip source path>\quazip\release -lquazip
Run Code Online (Sandbox Code Playgroud)

它可以构建并运行,但仅限于测试应用程序的发布模式。在调试模式下,我收到断言错误并且失败。