2013-03-26 75 views
4

我试图在安装了Qt 5.0.1 32位LGPL的Windows 7(32位)上构建quazip库(0.5.1版)。如何在Windows 7上构建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

+0

我必须明确地使用,当你运行的qmake您应该包括头一个也是库的路径当从命令行调用'qmake'时调用'INCLUDEPATH'和'LIBS',例如:'qmake PREFIX = ../install LIBS + = INCLUDEPATH + = 。把它放在'pro'文件中也不适用于我。 – 2013-04-22 09:12:21

回答

1

这里是为我工作(QuaZip 0.7在Windows 7 MSVC13 32位编译):

在命令行中键入:

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

之间的一切<>必须更改为您的适用路径

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

3

问题是QuaZIP找不到zlib库。如果你想看看

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/

+0

这适用于我,不是当我在'quazip-0.7.1'中运行它时,而是当我在'quazip-0.7.1/quazip'中运行它时。不确定,但我猜这些参数在.pro文件调用其他.pro文件时不会传播。 – 2015-07-05 05:35:44