Автономная кроссплатформенная (Windows / Linux)) Сжатие файлов для C / C ++? - PullRequest
2 голосов
/ 01 февраля 2012

Я ищу (желательно небольшую) библиотеку с открытым исходным кодом на C или C ++, которую я могу включить в свои лицензированные проекты MIT (размещенные в коде Google). Я хобби программист C / C ++, поэтому я не настолько продвинут, но я знаю только то, что мне нужно для разработки плагинов для приложения с именем "SA-MP" (работает в Windows и Linux). То, что я хочу сделать, это автоинсталлятор, который должен будет иметь возможность распаковывать сжатые файлы (желательно .zip, но подойдет любой другой метод сжатия файлов!).

Я искал такую ​​библиотеку, но им всегда нужно иметь некоторые дополнительные библиотеки DLL в Windows или другие файлы в Linux - это не то, что я ищу, поскольку конечные пользователи могут не знать, как установите плагин с необходимыми компонентами.

Посмотрел также Basic Compression Library и, похоже, не имеет сжатия файлов, а только алгоритмы. Так что с этим мне не повезло.

Чтобы сделать приведенный выше текст коротким:

  • Никаких внешних зависимостей, дополнительные библиотеки, которые необходимы, разрешены, если они могут быть связаны с моим проектом C / C ++.
  • Может сжимать целые каталоги и распаковывать их.
  • Работает на Windows и Linux.
  • Может безопасно использоваться с лицензией MIT (необязательно, предпочтительно)

Ответы [ 2 ]

3 голосов
/ 01 февраля 2012

Что не так с zlib (это первое, на что следует обратить внимание; все это используют) или libzip (первое попадание на freshmeat )?

  • zlib: Сама библиотека обеспечивает только сжатие, но есть пример реализации формата zip, который вы можете использовать.«Лицензия zlib» является слегка измененной лицензией MIT / X, поэтому должна быть совместимой.Тривиально построить как часть вашего приложения.
  • libzip: Поддерживает формат zip.BSD пересмотренная лицензия;Вы должны поддерживать его, но это в основном эквивалентно лицензии MIT / X.Также может быть связан статически.

В общем, нет технической причины, по которой вам нужно было бы динамически связывать что-либо .Вы неОднако для библиотек, лицензированных LGPL, есть законная причина: LGPL останавливается на границе динамического объекта, поэтому статическое связывание также делает другой код LGPL.

0 голосов
/ 01 февраля 2012

Что касается библиотек сжатия, существует несколько альтернатив с низким или очень низким уровнем зависимости. Zlib действительно первый, который приходит на ум, но справедливо сказать, что одно только его исходное дерево довольно «переполнено». При этом, я думаю, это не зависит от чего-то особенного.

Гораздо проще, но и намного легче, вы найдете альтернативы, такие как LZ4 , где весь исходный код заполняется в один файл, а внешние зависимости ограничены stdlib и такими.

Вероятно, у вас будет больше трудностей с поиском переносимой библиотеки, которая сканирует каталоги, поскольку такие вещи, как правило, зависят от ОС. Я думал о Шар Шелвиена , но это может быть связано с Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...