c++ - 在 Qt 项目中包含 zLib 的正确方法是什么?

标签 c++ qt zlib qmake

我正在尝试构建这个 Qt 项目,但我遇到了这些与 zLib 有关的 Undefined symbol 错误:

Undefined symbols for architecture x86_64:
  "_z_crc32", referenced from:
      ZipPrivate::createEntry(QFileInfo const&, QString const&, Zip::CompressionLevel) in zip.o
      UnzipPrivate::extractFile(QString const&, ZipEntryP const&, QIODevice*, QFlags<UnZip::ExtractionOption>) in unzip.o
  "_z_deflate", referenced from:
      ZipPrivate::createEntry(QFileInfo const&, QString const&, Zip::CompressionLevel) in zip.o
  "_z_deflateEnd", referenced from:
      ZipPrivate::createEntry(QFileInfo const&, QString const&, Zip::CompressionLevel) in zip.o
  "_z_deflateInit2_", referenced from:
      ZipPrivate::createEntry(QFileInfo const&, QString const&, Zip::CompressionLevel) in zip.o
  "_z_get_crc_table", referenced from:
      ZipPrivate::ZipPrivate() in zip.o
      UnzipPrivate::UnzipPrivate() in unzip.o
  "_z_inflate", referenced from:
      UnzipPrivate::extractFile(QString const&, ZipEntryP const&, QIODevice*, QFlags<UnZip::ExtractionOption>) in unzip.o
  "_z_inflateEnd", referenced from:
      UnzipPrivate::extractFile(QString const&, ZipEntryP const&, QIODevice*, QFlags<UnZip::ExtractionOption>) in unzip.o
  "_z_inflateInit2_", referenced from:
      UnzipPrivate::extractFile(QString const&, ZipEntryP const&, QIODevice*, QFlags<UnZip::ExtractionOption>) in unzip.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

我的项目中有一个 zlib 文件夹,我包括 zlib/zconf.h (zlib 目录是 /usr/local 的符号链接(symbolic link)/opt/zlib/include) 和 zlib/zlib.h。我在我的 .pro 文件中包含了这些行:

LIBS += -L/usr/local/opt/zlib/lib
INCLUDEPATH += /usr/local/opt/zlib/include
HEADERS += /usr/local/opt/zlib/include/zconf.h
HEADERS += /usr/local/opt/zlib/include/zlib.h

下面是我导入 zlib 的方式:

#include <zlib/zconf.h>
#include <zlib/zlib.h>

我对 Qt、C++ 和 zLib 还很陌生。在 Qt/C++ 项目中包含 zlib 的正确方法是什么?

最佳答案

请尝试下一个解决方案。

  1. zlib in Qt - QtZlib not present

  2. 您可以通过文本搜索找到定义 ZipPrivate::createEntry 和 UnzipPrivate::extractFile 的位置,并将这些文件包含到 INCLUDEPATH 或 HEADERS 中。

  3. 错误看起来像是丢失了 CONFIG 变量的选项。找到将在您的项目中打开支持 zlib 的选项。我目前不知道该选项。

关于c++ - 在 Qt 项目中包含 zLib 的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47823772/

相关文章:

c++ - QTcpSocket 无法绑定(bind)到正确的 IP

qt - 如何在单击按钮时打开第二个 qml 页面

zlib - 如何缩小为固定大小的输出文件?

Python - 从大型 (6GB+) zip 文件中提取文件

compression - 从单独压缩的 block 创建 gzip 流

c++ - 传递给函数的 Default_random_engine 提供可重复的结果

c++ - C++中的欺骗文件描述符

c++ - std::map key 与 operator< 不匹配

c++ - camShift 和 cvCamShift 有什么区别?

qt - 如何获取 QML 列布局子列表?