【问题标题】:how to add zlib to an existing qt installation如何将 zlib 添加到现有的 qt 安装
【发布时间】:2010-10-23 06:10:36
【问题描述】:

如何将 zlib 添加到现有的 Qt 安装中。我在这方面很新,所以请给我详细的描述! 提前感谢您的帮助!

【问题讨论】:

    标签: c++ qt zlib


    【解决方案1】:

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

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

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

    INCLUDEPATH += $$[QT_INSTALL_PREFIX]/src/3rdparty/zlib
    

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

    【讨论】:

    • 感谢您的建议。我有类似的问题,将 zlib 说目录添加到 INCLUDEDIRS 使编译正常。直到连接阶段。链接器不知道在哪里寻找要链接的 zlib,我也不知道。请帮忙。
    • 你不必链接zlib,zlib函数是QtCore4.dll的一部分。
    • 从 Qt 5 开始,这个目录通常不可用。幸运的是,该行也不再需要,因为 zlib.h 可以像这样包含:#include <QtZlib/zlib.h>
    • 在我也对这个问题进行了猛烈抨击之后,我可以保证 Thorbjørn 的回答有效。 VS2010 & Qt 5.2.0。
    • 在类似的问题中,有一个完全不同的答案。您根本不应该使用 qt 内部 zlib:stackoverflow.com/questions/23989823/…
    【解决方案2】:

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

    INCLUDEPATH += $$[QT_INSTALL_HEADERS]/QtZlib

    这有效,例如构建 quazip,如果你将它添加到 quazip.pro

    属性$$[QT_INSTALL_HEADERS] 指向QTDIR/qtbase/include/,QtZlib/zlib.h 位于其中。

    在不更改包含路径的情况下,您必须按照 Thorbjørn 的评论将每个包含语句更改为 #include <QtZlib/zlib.h>。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 不,实际上我想添加它,以便我可以使用 qyazip 来压缩目录,所以.. :(
      【解决方案4】:

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

      这是我在 windows 上使用 quazip 0.4.3 的方法。

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

      SUBDIRS=quazip
      

      然后我从以下位置下载了 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>
      

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

      #  *-msvc*: QMAKE_LFLAGS += /IMPLIB:$$DESTDIR\\quazip.lib
      

      我将 LIBS 行修改为:

      *-msvc*: LIBS += -lzlibwapi -L<path to zlib binaries>/dll32
      

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

      #include "zlib.h"
      

      变成:

      #include <zlib.h>
      

      之后,我将其构建为发布模式并生成了一个 DLL。

      然后在项目中使用这个,我添加了如下配置:

      INCLUDEPATH += <quazip source path>
      INCLUDEPATH += <zlib source path>
      
      LIBS += -L<quazip source path>\quazip\release -lquazip
      

      这可以构建和工作,但仅在测试应用的发布模式下。在调试模式下,我得到断言错误并且它失败了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-10
        • 2020-05-17
        • 2014-11-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多