Использование LZMA SDK в C ++ - PullRequest
4 голосов
/ 21 марта 2010

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

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

Ответы [ 2 ]

6 голосов
/ 05 апреля 2011

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

4 голосов
/ 21 марта 2010

В качестве общего ответа на этот вопрос, чтобы заставить любой 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 ++ тоже может.

...