2010-10-23 15 views

Respuesta

10

zlib está contenido en las bibliotecas de Qt de núcleo. Si desea utilizar las funciones zlib en un programa Qt, solo debe incluir zlib.h, que está en src/3rdparty/zlib. Ver p. la implementación de QByteArray en src/corelib/tools.

Si desea utilizar quazip, simplemente agregue la biblioteca a su proyecto. Se basa en las bibliotecas de Qt. Tenga cuidado de construir la biblioteca de qyazip correcta que corresponda a su instalación de Qt.

Usted consigue la ruta correcta añadiendo la siguiente línea a su archivo de proyecto:

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

Para QT5, véase el comentario de Thorbjørn: es suficiente utilizar #include <QtZlib/zlib.h>.

+2

Gracias por el consejo. Tengo el problema similar, y al agregar zlib dicho directorio a INCLUDEDIRS hace que la compilación vaya bien. etapa de enlace. Linker no sabe dónde buscar zlib para vincularse y yo tampoco. Por favor, ayuda. – Septagram

+0

Para no tener que enlazar con zlib, las funciones zlib son parte de QtCore4.dll. – hmuelner

+2

A partir de Qt 5 este directorio normalmente no está disponible. Afortunadamente, esa línea ya no es necesaria ya que zlib.h se puede incluir así: '#include ' –

7

Si desea usar zlib para compresión/descompresión, use qCompress/qUncompress.

+1

en realidad no quiero agregarlo para que pueda usar qyazip para directorios de compresión, así que ... :( – defiant

2

Al menos algunas personas aquí quieren construir Quazip, que requiere zlib.

Así es como lo hice en Windows con quazip 0.4.3.

En primer lugar en el quazip.pro me cambió SUBDIRS para contener solamente:

SUBDIRS=quazip 

Entonces descargado binarios zlib y fuente de: http://www.winimage.com/zLibDll/zlib125dll.zip [] binarios http://www.winimage.com/zLibDll/zlib125.zip [fuente]

ambos enlaces llegaron de http://zlib.net

Luego, en la subcarpeta quazip/quazip.pro agregué:

INCLUDEPATH += <path to zlib source> 

en la sección win32 {} I comentado esta línea:

# *-msvc*: QMAKE_LFLAGS += /IMPLIB:$$DESTDIR\\quazip.lib 

y he modificado la línea de LIBS a esto:

*-msvc*: LIBS += -lzlibwapi -L<path to zlib binaries>/dll32 

también he modificado en zip.c y unzip.c la

#include "zlib.h" 

para convertirse en:

#include <zlib.h> 

Después de esto, configuro esto para liberar el modo y obtuve un DLL.

Luego, en el proyecto de utilizar esto, añade la siguiente configuración:

INCLUDEPATH += <quazip source path> 
INCLUDEPATH += <zlib source path> 

LIBS += -L<quazip source path>\quazip\release -lquazip 

Y que construye y funciona, pero sólo en modo de lanzamiento para la aplicación de prueba. En el modo de depuración, recibo errores de aserción y falla.

7

La respuesta actual solo es válida para Qt4. Desde Qt5, el archivo de encabezado zlib se almacena en un directorio diferente.Usando la propiedad qmake QT_INSTALL_HEADERS puede agregar a su archivo .pro:

INCLUDEPATH += $$[QT_INSTALL_HEADERS]/QtZlib

Esto funciona, por ejemplo, para construir quazip, si lo agrega a quazip.pro

La propiedad $$[QT_INSTALL_HEADERS] apunta a QTDIR/qtbase/include/ dentro de la cual se encuentra QtZlib/zlib.h.

Sin cambiar el includepath, tiene que cambiar cada instrucción de inclusión a #include <QtZlib/zlib.h> como ha comentado Thorbjørn.

Cuestiones relacionadas