C++ 在windows 8.1和qt creator下编译quazip

C++ 在windows 8.1和qt creator下编译quazip,c++,qt,quazip,C++,Qt,Quazip,我是新手,尝试在Qt5.5下使用Quazip。所以我刚从下载了项目源代码并打开了.pro文件。当我尝试构建项目时,我遇到了多个错误: C1083: Cannot open include file: 'zlib.h': No such file or directory 为了避免在windows上构建zlib,我刚刚在C:\GnuWin32中安装了完整的windows包(从这里:)。然后我在.pro文件中添加了这一行: INCLUDEPATH += C:\GnuWin32\include 这

我是新手,尝试在Qt5.5下使用Quazip。所以我刚从下载了项目源代码并打开了.pro文件。当我尝试构建项目时,我遇到了多个错误:

C1083: Cannot open include file: 'zlib.h': No such file or directory
为了避免在windows上构建zlib,我刚刚在C:\GnuWin32中安装了完整的windows包(从这里:)。然后我在.pro文件中添加了这一行:

INCLUDEPATH += C:\GnuWin32\include
这产生了另一个错误:

Cannot open include file: 'unistd.h': No such file or directory
但是改变这条路线

#if 1           /* HAVE_UNISTD_H -- this line is updated by ./configure */
这个问题解决了

#if HAVE_UNISTD_H
不幸的是,现在我得到了25个未解析的外部符号,其中一些:

quaadler32.obj:-1: error: LNK2019: unresolved external symbol adler32 referenced in function "public: virtual unsigned int __cdecl QuaAdler32::calculate(class QByteArray const &)" (?calculate@QuaAdler32@@UEAAIAEBVQByteArray@@@Z)
quacrc32.obj:-1: error: LNK2019: unresolved external symbol crc32 referenced in function "public: virtual unsigned int __cdecl QuaCrc32::calculate(class QByteArray const &)" (?calculate@QuaCrc32@@UEAAIAEBVQByteArray@@@Z)
unzip.obj:-1: error: LNK2001: unresolved external symbol crc32
quagzipfile.obj:-1: error: LNK2019: unresolved external symbol gzopen referenced in function "private: void * __cdecl QuaGzipFilePrivate::open(class QString const &,char const *)" (?open@QuaGzipFilePrivate@@AEAAPEAXAEBVQString@@PEBD@Z)
quaziodevice.obj:-1: error: LNK2019: unresolved external symbol deflateInit_ referenced in function "public: virtual bool __cdecl QuaZIODevice::open(class QFlags<enum QIODevice::OpenModeFlag>)" (?open@QuaZIODevice@@UEAA_NV?$QFlags@W4OpenModeFlag@QIODevice@@@@@Z)
quaziodevice.obj:-1: error: LNK2019: unresolved external symbol inflate referenced in function "protected: virtual __int64 __cdecl QuaZIODevice::readData(char *,__int64)" (?readData@QuaZIODevice@@MEAA_JPEAD_J@Z)
但这并没有解决问题。在Qt下使用Quazip最简单的方法是什么

  • 从下载quazip源代码
  • 由Qt创建者quazip.pri打开
  • 替换所有字符串#包括“zlib.h”或“#包括
  • #包括
    
  • 构建项目并运行单元测试

  • 很有效,谢谢!但我怎么知道qt拥有zlib的实现呢?@Isaac qt没有zlib的实现。在$$[QTDIR]\Src\qtbase\Src\3rdparty\zlib中找到了Qt使用的zlib版本#包括像zlib.h.的别名之类的工作,非常好,为我修复了这个问题。其他未解决的符号,但这是伟大的。谢谢@Milovidov。我想这是因为我的windows路径和QT创建者之间的编译器不匹配。现在通过从命令行编译所有内容来工作。
    LIBS += -LC:\GnuWin32\lib
    
    #include <QtZlib/zlib.h>