Skip to content
Riccardo edited this page Nov 8, 2018 · 20 revisions

bit7z

A C++ static library offering a clean and simple interface to the 7-zip DLLs

GitHub release MSVC version Architectures Build status License

Introduction

bit7z is a C++ static library which allows to compress and extract many file archive formats, all through a clean, simple and entirely object-oriented interface to the dynamic libraries from the 7-zip project (https://www.7-zip.org/).
It supports compression and extraction to and from the filesystem or the memory, reading of archives metadata, multi-volume archives, operation progress callbacks and many other functionalities.

Supported Features

  • Compression of files and directories in the following archive formats: 7z, XZ, BZIP2, GZIP, TAR, ZIP and WIM.
  • Extraction of the following archive formats: 7z, AR, ARJ, BZIP2, CAB, CHM, CPIO, CramFS, DEB, DMG, EXT, FAT, GPT, GZIP, HFS, HXS, IHEX, ISO, LZH, LZMA, MBR, MSI, NSIS, NTFS, QCOW2, RAR, RAR5, RPM, SquashFS, TAR, UDF, UEFI, VDI, VHD, VMDK, WIM, XAR, XZ, Z and ZIP.
  • Reading metadata of archives and of their content (from v3.x)
  • Testing archives for errors (from v3.x)
  • Compression and extraction to and from memory (from v2.x — compression to memory is supported only for BZIP2, GZIP, XZ and TAR formats).
  • Compression using a custom directory system in the output archives (from v3.x)
  • Selective extraction of only specified files/folders contained in archives (from v3.x)
  • Creation of encrypted archives (strong AES-256 encryption — only for 7z and ZIP formats).
  • Archive header encryption (only for 7z format).
  • Choice of the compression level (from none to ultra, not all supported by every output archive format).
  • Solid archives (only for 7z).
  • Multi-volume archives (from v2.1.x).
  • Operation callbacks, through which it is possible to obtain real time information about the ongoing extraction or compression operation (from v2.1.x).

Please note that the presence or not of some of the above features depends on the particular .dll used along with bit7z. For example, the 7z.dll should support all these features, while 7za.dll should support only the 7z file format and the 7zxa.dll can only extract 7z files. For more information about the 7z SDK DLLs, please see this wiki page.

Donations

If you have found this project useful, please consider supporting it with a small donation or buying me a coffee/beer, so that I can keep improving it! Thank you! :)

Buy Me a Coffee at ko-fi.com Beerpay Beerpay Wish

PayPal

License (GPL v2)

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

Clone this wiki locally