API для создания/распаковки zip-файлов, совместимый с ANSI C и используемый в приложениях Windows.

Это первый вопрос на этом сайте StackExchange. Пожалуйста, дайте мне знать, если мой вопрос не по теме, и если да, то какой из сайтов будет более подходящим.

Я ищу API, который можно использовать с ANSI C в ОС Windows 7. Я буду использовать его для распаковки файлов, созданных с помощью WinZip, DynaZip, 7zip.

(Я заметил, что каждый из них, кажется, поддерживает алгоритмы сжатия, созданные друг другом, т.е. 7zip открывает/создает файлы, которые могут быть открыты/созданы WinZip, которые, в свою очередь, могут быть открыты/созданы DynaZip)

До сих пор я пытался скомпилировать предложения из 7zip и miniz , используя компилятор ANSI C в среде LabWindows/CVI (реализация C99), но столкнулся с отсутствием файлов заголовков для обоих предложений. Я также просмотрел API-интерфейсы Windows в MSDN, но ничего там не нашел. Удивлен этому и задаюсь вопросом, не искал ли я не в тех местах.

Я подозреваю, что любое из предложений от 7zip или miniz было бы идеальным, за исключением неполного распределения файлов. Было бы полезно получить информацию от других, которые успешно создали любой из этих API (в среде Windows/C99). Или если совсем другой подход, т.е. другой API. Любая помощь приветствуется.

Почему это должен быть ANSI C?
@CristianCiupitu - Мой клиент стандартизирован на ANSI C, и приложение, с которым я буду использовать этот API, будет ansi C. Если API написан на C++ или C#, это не проблема, просто должен быть способ для меня связать с ним, т.е. поставляется с .dll, .lib и .h.

Ответы (2)

Вы можете использовать LZMA SDK .

  • кроссплатформенный
  • ANSI C-совместимый
  • лицензия на общественное достояние

Вы должны указать компилятору, где искать заголовки или копировать заголовки в стандартные каталоги (см. это ).

По словам автора, LZMA требует использования C++ для распаковки файлов .zip. Совместимость с ANSI C, по-видимому, заканчивается использованием только для сжатия LZMA.

Возможно , ответом является libarchive , но я не уверен, что это ANSI C. Хотя он переносим и работает в большинстве POSIX-подобных систем (включая FreeBSD, Linux, Solaris и т. д.) и поддерживает Windows, включая Cygwin, MinGW и Visual. Студия.

Я посмотрю. Спасибо. Знаете ли вы, есть ли какие-либо ссылки на примеры, использующие эту библиотеку? Я не видел ни одного по ссылке, которую вы мне дали.