我正在尝试构建此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/opt/zlib/include的符号链接(symbolic link))和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的正确方法是什么?

最佳答案

请尝试下一个解决方案。

  • zlib in Qt - QtZlib not present
  • 您可以通过文本搜索找到已定义ZipPrivate::createEntry和UnzipPrivate::extractFile的文件,并将这些文件包含到INCLUDEPATH或HEADERS中。
  • 错误看起来像CONFIG变量的丢失选项。找到的选项将在您的项目中打开对zlib的支持。我目前不知道该选项。
  • 关于c++ - 在Qt项目中包括zLib的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47823772/

    10-11 22:43
    查看更多