在C++中使用LZMA SDK

4
我正在尝试在我的程序中使用LZMA SDK来压缩一个文件。我已经下载了SDK,但不知道如何使用它。有人能告诉我需要采取哪些步骤才能使其工作吗?非常感谢您的帮助。
我对C和C++的世界几乎是新手。

1
嗨,米拉德,你使用的平台和开发环境是什么?提供这些信息可以让我们的工作更轻松。虽然有一个通用的答案,但根据你的平台可能会有特定的解决方法。 - user257111
2个回答

6

我曾经需要在我的一个程序中使用7zip,发现LZMA SDK比我预期的要棘手一些。因此,我开始为它创建了一个简化的C++包装器,这里。它目前只能在Windows上使用,但如果你的平台是Windows,你可能会发现它很有用。


1
尽管您的SevenZip++库文档不是非常详细,但它写得非常清晰,仍然极其有用,可以作为使用LZMA + 7zip SDK的教程。谢谢。 - Felix Dombek

4
作为回答这个问题的一般性方法,以使任何sdk工作,您需要做三件事:
  • 在源代码中#include适当的头文件,以便编译器可以检查您是否使用了正确的函数,链接器知道您正在引用哪些符号。
  • 告诉编译器头文件所在的位置。您可以使用gcc来完成此操作,使用gcc -I/path/to/header/dir
  • 告诉链接器要编译的库所在的位置并将其包含进来。同样,使用gcc,您可以使用gcc -L/path/to/library/dir来执行此操作,并使用gcc -lnamewithoutlibprefix(小写l)告诉gcc(好吧,ld)链接到特定的库。
例如,对于我经常使用的一个库MPIR,针对/opt树,我可能会像这样编译:
gcc -I/opt/include -L/opt/lib -lmpir myprog.c -o myprog

这只是一个例子,非常针对Linux。事实上,MPIR已安装在/usr下,我不需要这样做,我只是以此为例。

对于Windows,请查看 cl /ILINK.EXE options

当然,您可以在许多不同的开发环境下自动化此过程。例如,Visual Studio将为您生成正确的命令行,如果您填写正确的对话框。我相信Eclipse也会这样做,我知道Dev/C++也可以。


那么,是否有可能将可执行文件嵌入到我的程序中呢?因为有一个名为7za.exe的LZMA SDK命令行版本,我可以使用系统()命令在我的程序中压缩和解压缩文件,但我想知道是否可以将其放入我的程序中。 - Milad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接