El uso de zlib en su código es extremadamente simple, algo que la documentación (o las diversas respuestas en stackoverflow que encontré) no lo hacen obvio.
La siguiente técnica funciona para cualquier compilador e IDE. Lo probé en windows mingw usando code: blocks, por lo que lo publico como respuesta a esta pregunta.
descargar el código fuente de zlib http://www.zlib.net/
copiar todos los archivos .c y .h desde la carpeta raíz de la fuente de zlib a una carpeta en la ruta de búsqueda del compilador.
Agregue los archivos fuente zlib al proyecto IDE.
Agregar #include "zlib.h" a su código fuente
compresa de llamadas o descomprimir
Eso es todo. No podría ser más simple.
único que hay que tener cuidado es la gestión de memoria, ya que esta es c . código
para hacer las cosas aún más simple para mí, he elaborado un envoltorio de C++ que pueden hacer uso, de esta manera:
/** ZLIB C++ wrapper
Usage:
<pre>
#include "cZLIB.h"
{
// compress data in bigbuffer
raven::set::cZLIB ZLIB;
ZLIB.Compress(bigbuffer, sizebigbuffer);
// use compressed buffer, before ZLIB goes out of scope
use(ZLIB.Buffer(), ZLIB.Length());
}
...
{
// decompress data in smallbuffer
raven::set::cZLIB ZLIB;
ZLIB.Inflate(smallbuffer, sizesmallbuffer)
// use decompressed data, before ZLIB goes out of scope
use(ZLIB.Buffer(), ZLIB.Length());
}
</pre>
Build:
Download this code (cZLIB.h and cZLIB.cpp) from
https://github.com/JamesBremner/raven-set
and install somewhere in your compiler search path.
Let's assume you install it in folder .../src.
Download the zlib source code from http://www.zlib.net/
Copy all the .c and .h files from the root folder of the zlib source
to a new folder .../src/zlib
Add the files cZLIB.h, cZLIB.cpp and all the files in .../src/zlib
to the IDE project.
Build.
*/
class cZLIB
...
Por alguna razón, me encontré con que MinGW tiene una biblioteca zlib y la biblioteca libz. Cuando uso libz, todo funciona. Realmente no sé cuáles son las diferencias o por qué el nombre está al revés, oh pozos. El manual dice que el buffer de salida solo tiene que ser 12 bytes más que la entrada, ya que es la peor de las mayúsculas y minúsculas (encabezado de 10 bytes y 2 bytes para decir que no hay compresión?). Funciona ahora con libz en lugar de zlib. De hecho, creo que los archivos de la biblioteca zlib son archivos que de alguna manera se instalaron accidentalmente hace tiempo a partir de una configuración errónea. (p.s.a mods: la respuesta a su propio botón de pregunta no funciona para mí ?!) – myforwik
@myforwik: libz es zlib. –