2008-11-04 21 views
27

Quiero poder comprimir archivos de mi aplicación C/C++ no guiada, en varias versiones de Windows, Linux/Unix y MacOS.biblioteca portátil zip para C/C++ (no es una aplicación)

El usuario compilará y ejecutará utilizando esta aplicación utilizando Eclipse + makefile o VisualStudio. No quiero que el usuario tenga que instalar algo por separado o que los archivos ejecutables de instalación de mi archivo make.

Prefieren el código abierto. Ya estoy viendo "Zip 3.0" ...

+6

¿Presumiblemente por 'zip' quieres decir zip y no solo comprimir/archivar? La mayoría de las respuestas aquí recomiendan zlib, pero de acuerdo con su sitio web, zlib solo no es compatible con archivos zip http://www.zlib.net/zlib_faq.html#faq11 –

Respuesta

5

Hemos usado zlib un par de veces aquí. Es una biblioteca bastante estándar que tiene implementaciones en la mayoría de los idiomas principales.

+5

No creo que zlib pueda crear un archivo ZIP que incluya múltiples archivos.Es una biblioteca de compresión, y también incluye funciones para crear un archivo (a modo de gzip). –

0

ZLIB - la biblioteca más portátil del mundo. código abierto, muy probado y confiable. El estándar de oro. ¿por qué usar algo más?

+25

... porque no maneja * archivos zip *? Simplemente maneja la compresión de flujo. – BastiBen

+7

En el directorio controb/minizip hay utilidades zip. – Cheeso

+1

@ Cheeso Creo que deberías haber mencionado eso. No me di cuenta de que minizip estaba incluido con zlib, además de que hay muchas otras cosas buenas en 'contrib'. Entonces, siento que podrías editar tu respuesta para ser un poco más útil. – leetNightshade

1

Otros han mencionado zlib, que es agradable y bastante fácil.

El 7-Zip (LZMA) SDK es más complejo pero también tiene tasas de compresión muy buenas.

Edit: Aunque todavía está en desarrollo, con el proceso de publicación y el historial en el tiempo, dudaría en recomendarlo ahora.

+0

De la documentación parece que solo admite archivos en formato 7z. ¿Es esto falso? – pqnet

+0

@pqnet - Uso 7zip. Funciona con cualquier formato de compresión (zip, 7zip, .pkzip, tar, ... etc., etc.) No puedo recomendar la API en este momento, ya que no la he usado, pero las aplicaciones 7zip funcionan muy bien. – ryyker

11

Tome un vistazo a Libarchive. Pasé mucho tiempo buscando una biblioteca multiplataforma y licencia LGPL con una interfaz conveniente. Este es el mejor de todos los que he visto. Herramienta muy fácil y poderosa. Originalmente diseñado para sistemas tipo Unix, pero también hay the Windows version.

+0

Buen hallazgo. Gracias por compartir. Gran documentación. – Homer6

+0

¿Puede ayudarme en la instalación de libarchive, estoy usando VS2013 y obtengo este error 'MSB6006:" cmd.exe "salió con el código -1073741571', cuando I * Rrebuild Solution * generó' libarchive.sln' después de seguir [estos pasos] (https://github.com/libarchive/libarchive/wiki/BuildInstructions#windowsvisual-studio). – ABCmo

+0

Lo siento, me temo que no puedo ayudar, no tengo ninguna máquina que ejecute Windows disponible en este momento. Sugeriría pedirle a los desarrolladores de libarchive que lo ayuden. – Dmitry

5

Me gustaría recomendar ZipLib https://bitbucket.org/wbenny/ziplib/wiki/Home

razones personales por eso amo este proyecto:

  • construido alrededor de C++ stl 11 arroyos (.! Ex descomprime en corrientes STL)
  • liviano (sin dependencias que no sean zlib)
  • se puede usar en ambas ventanas & liunx

Me llevó mucho tiempo encontrar este proyecto, espero que esto ayude a alguien.

+0

No puedo ver cómo abro un archivo ZIP que obtuve en un búfer de memoria. O en el disco de WinNT, 'koz filename estará en std :: wstring y no hay API para tomarlo. – hypersw

Cuestiones relacionadas