如何在 Windows 7 上构建 Quazip 0.5.1?

Posted

技术标签:

【中文标题】如何在 Windows 7 上构建 Quazip 0.5.1?【英文标题】:How to build Quazip 0.5.1 on Windows 7? 【发布时间】:2013-03-26 22:32:19 【问题描述】:

我正在尝试在安装了 Qt 5.0.1 32 位 LGPL 的 Windows 7(32 位)上构建 quazip 库(0.5.1 版)。

当我在 Qt-Commandprompt 中运行时:

qmake
mingw32-make

将目录设置为我提取 Quazip 的文件夹 (C:\Qt\quazip-0.5.1\quazip),我得到以下错误日志:

C:\Qt\quazip-0.5.1\quazip>mingw32-make
mingw32-make -f Makefile.Release
mingw32-make[1]: Entering directory 'C:/Qt/quazip-0.5.1/quazip'
g++ -Wl,-s -shared -mthreads -Wl,--out-implib,release\libquazip.a -o release\qua
zip.dll object_script.quazip.Release  -LC:\Qt\Qt5\5.0.1\mingw47_32\lib -lQt5Core
./release\unzip.o:unzip.c:(.text+0x1008): undefined reference to `crc32'
./release\unzip.o:unzip.c:(.text+0x10aa): undefined reference to `inflate'
./release\unzip.o:unzip.c:(.text+0x10da): undefined reference to `crc32'
./release\unzip.o:unzip.c:(.text+0x1110): undefined reference to `crc32'
./release\unzip.o:unzip.c:(.text+0x1327): undefined reference to `inflateEnd'
./release\unzip.o:unzip.c:(.text+0x1727): undefined reference to `get_crc_table'
./release\unzip.o:unzip.c:(.text+0x186f): undefined reference to `inflateInit2_'
./release\zip.o:zip.c:(.text+0xac7): undefined reference to `crc32'
./release\zip.o:zip.c:(.text+0xb7c): undefined reference to `deflate'
./release\zip.o:zip.c:(.text+0xcdf): undefined reference to `deflate'
./release\zip.o:zip.c:(.text+0xef5): undefined reference to `deflateEnd'
./release\zip.o:zip.c:(.text+0x13a8): undefined reference to `get_crc_table'
./release\zip.o:zip.c:(.text+0x1af9): undefined reference to `deflateInit2_'
./release\quaadler32.o:quaadler32.cpp:(.text+0x2e): undefined reference to `adle
r32'
./release\quaadler32.o:quaadler32.cpp:(.text+0x61): undefined reference to `adle
r32'
./release\quaadler32.o:quaadler32.cpp:(.text+0xa1): undefined reference to `adle
r32'
./release\quaadler32.o:quaadler32.cpp:(.text+0xb1): undefined reference to `adle
r32'
c:/qt/qt5/tools/mingw/bin/../lib/gcc/i686-w64-mingw32/4.7.2/../../../../i686-w64
-mingw32/bin/ld.exe: ./release\quaadler32.o: bad reloc address 0x0 in section `.
rdata$_ZTI13QuaChecksum32[__ZTI13QuaChecksum32]'
collect2.exe: error: ld returned 1 exit status
Makefile.Release:106: recipe for target 'release\quazip.dll' failed
mingw32-make[1]: *** [release\quazip.dll] Error 1
mingw32-make[1]: Leaving directory 'C:/Qt/quazip-0.5.1/quazip'
makefile:34: recipe for target 'release' failed
mingw32-make: *** [release] Error 2

但是在我的 Zlib 文件夹 (C:\Qt\Qt5\5.0.1\Src\qtbase\src\3rdparty\zlib) 中安装了所有这些列出的文件。

.

当我试图解决问题时,我已将其添加到 quazip.pro 和 quazip.pri 中:

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

,如何建议here。

到目前为止,我在 Google 上找到的所有其他解决方案都没有帮助。

我希望你们中的某个人可以帮助我。

您好, LVreg

【问题讨论】:

从命令行调用qmake 时,我必须明确使用INCLUDEPATHLIBS,例如:qmake PREFIX=../install LIBS+=<path/to/zlib.a> INCLUDEPATH+=<path/to/zlib/includes>。把它放在pro 文件中对我也不起作用。 【参考方案1】:

问题是 QuaZIP 找不到 zlib 库。运行 qmake 时,您应该包括头文件的路径以及库:

qmake "INCLUDEPATH+=C:/Qt/Qt5/5.0.1/Src/qtbase/src/3rdparty/zlib" "LIBS+=-LC:/Qt/Qt5/5.0.1/Src/qtbase/src/3rdparty/zlib -lz"
mingw32-make

如果您想查看,我的博客中有完整的解释:http://www.antonioborondo.com/2014/10/22/zipping-and-unzipping-files-with-qt/

【讨论】:

这对我有用,不是当我在 quazip-0.7.1 中运行它时,而是当我在 quazip-0.7.1/quazip 中运行它时。不确定,但我猜当 .pro 文件调用其他 .pro 文件时参数不会传播。【参考方案2】:

这对我有用(使用 MSVC13 32 位编译的 Windows 7 上的 QuaZip 0.7):

在命令行输入:

SET INCLUDE=<PathToZib\include>;%INCLUDE%
SET LIB=<PathToZib\lib>;%LIB%
qmake PREFIX=<FolderWhereInstallWillPutFiles> LIBS+=<PathToZib\lib>/zdll.lib
nmake
nmake install

之间的所有内容都必须更改为您的适用路径

注意: 在 LIBS+= 部分使用 / 而不是 \ 作为文件夹分隔符

【讨论】:

【参考方案3】:

尝试在 windows 上制作 quazip 的库 - 看这里:

https://www.maefloresta.com/wiki/doku.php?id=quazip_windows

但是 - 试试下面的命令 - 用“mingw32-make”代替“make”。

【讨论】:

以上是关于如何在 Windows 7 上构建 Quazip 0.5.1?的主要内容,如果未能解决你的问题,请参考以下文章

Qt编译QuaZip的过程和使用踩坑--Win平台和Android平台编译

Qt编译QuaZip的过程和使用踩坑--Win平台和Android平台编译

quazip:Windows ming32w-make 错误

无法构建quazip。 moc 编译器不运行。命令行找不到相关的类

Qt 4 - QuaZip - 文件大小限制和内存问题

使用 MinGW 在 Windows 上构建 GLEW 1.7.0