Использование LZMA SDK в C++

Я пытаюсь использовать LZMA SDK для сжатия файла в моей программе. Я скачал SDK, но не знаю, как им пользоваться. Может ли кто-нибудь сказать мне, какие шаги мне нужно предпринять, чтобы сделать эту работу? Любая помощь будет высоко ценится

Я почти новичок в мире C и C++.


person Milad    schedule 21.03.2010    source источник
comment
Привет Милад, платформа и среда разработки? Предоставление такого рода информации облегчает нашу жизнь. Существует общий ответ, но может быть и особый способ сделать это в зависимости от вашей платформы.   -  person    schedule 21.03.2010


Ответы (2)


У меня также была потребность использовать 7zip в одной из моих программ, и LZMA SDK оказался немного более сложным, чем я ожидал. Поэтому я создал для него упрощенную оболочку C++, здесь. В настоящее время он доступен только для Windows, но если это ваша платформа, вы можете найти его полезным.

person Chadwick    schedule 05.04.2011
comment
Хотя ваша библиотека SevenZip++ не документирована очень тщательно, она написана настолько ясно, что по-прежнему чрезвычайно полезна в качестве руководства по использованию LZMA + 7zip SDK. Спасибо. - person Felix Dombek; 29.01.2014

В качестве общего ответа на этот вопрос, чтобы заставить любой SDK работать, вам нужно сделать три вещи:

  • #include соответствующие заголовки в вашем исходном коде, чтобы компилятор мог проверить, что вы использовали правильные функции, а компоновщик знал, на какие символы вы ссылаетесь.
  • Сообщите компилятору, где находятся ваши заголовочные файлы. Вы можете сделать это с помощью gcc, используя gcc -I/path/to/header/dir.
  • Сообщите компоновщику, где находятся библиотеки, которые должны быть скомпилированы, и включите их. Опять же, используя gcc, вы делаете это с помощью gcc -L/path/to/library/dir и указываете gcc (ну, ld) связать конкретную библиотеку с помощью gcc -lnamewithoutlibprefix (нижний регистр l).

В качестве примера для библиотеки, которую я часто использую, MPIR для дерева /opt я мог бы скомпилировать так:

gcc -I/opt/include -L/opt/lib -lmpir myprog.c -o myprog

Это всего лишь пример, и он очень специфичен для Linux. По правде говоря, MPIR установлен в /usr, и мне этого делать не нужно, я просто ковыряюсь здесь в качестве примера.

Для Windows см. cl /I и параметры LINK.EXE.

Конечно, вы можете автоматизировать этот процесс в различных средах разработки. Visual Studio, например, сгенерирует для вас правильные командные строки, если вы заполните правильные диалоговые окна. Поэтому я верю, что Eclipse сможет это сделать, и я знаю, что Dev/C++ тоже сможет.

person Community    schedule 21.03.2010
comment
ну а можно ли как-то встроить исполняемый файл в мою собственную программу?? Потому что есть версия LZMA SDK для командной строки под названием 7za.exe, и я могу использовать ее для сжатия и распаковки файлов с помощью команды system() в моей программе, но мне интересно, могу ли я поместить ее в свою собственную программу. - person Milad; 21.03.2010