用于 C/C++ 的便携式 zip 库(不是应用程序)[关闭]
Posted
技术标签:
【中文标题】用于 C/C++ 的便携式 zip 库(不是应用程序)[关闭]【英文标题】:portable zip library for C/C++ (not an application) [closed] 【发布时间】:2008-11-04 18:45:56 【问题描述】:我希望能够在多个版本的 Windows、Linux/Unix 和 MacOS 上从我的非 gui C/C++ 应用程序中压缩文件。
用户将使用 Eclipse + makefile 或 VisualStudio 使用此应用程序进行编译和运行。我不希望用户必须单独安装某些东西,或者让我的 makefile 安装可执行文件。
更喜欢开源。我已经在看“Zip 3.0”了...
【问题讨论】:
大概是“zip”,您的意思是 zip 而不仅仅是压缩/存档?这里的大多数答案都推荐 zlib 但根据其网站 zlib 单独不支持 zip 存档zlib.net/zlib_faq.html#faq11 【参考方案1】:看看Libarchive。我花了很多时间寻找一个具有方便界面的跨平台和 LGPL 许可库。这是我见过的最好的。非常简单而强大的工具。最初是为类 Unix 系统设计的,但也有 the Windows version。
【讨论】:
不错的发现。感谢分享。很棒的文档。 你能帮我安装 libarchive,我目前正在使用 VS2013,当我 Rrebuild Solution 生成 @ 时,我收到此错误MSB6006: "cmd.exe" exited with code -1073741571.
987654325@关注these steps之后。
抱歉,我帮不上忙,我现在没有任何运行 Windows 的机器可用。我建议请 libarchive 开发人员提供帮助。
libarchive 不适用于 RAR 文件(或者更好的是它从根本上被破坏) - 因此不确定它有多少价值,因为网络上有多少 RAR 文件......【参考方案2】:
我使用 miniz 取得了不错的成绩:https://code.google.com/p/miniz/
对于c++中字符串的简单压缩,我也很喜欢Timo Bingmann's solution。
【讨论】:
再次为 miniz 投票。不错的单文件库。解压缩 .zip 档案的速度很快。【参考方案3】:我推荐 ZipLib https://bitbucket.org/wbenny/ziplib/wiki/Home
我喜欢这个项目的个人原因:
围绕 c++11 stl 流构建(例如解压缩为 stl 流!) 轻量级(除了 zlib 之外没有依赖项) 可以在 windows 和 liunx 上使用我花了很长时间才找到这个项目 - 希望这对某人有所帮助。
【讨论】:
看不到我如何打开内存缓冲区中的 ZIP 存档。或者在 WinNT 的磁盘上,'koz 文件名将在 std::wstring 中,并且没有 API 可以使用它。【参考方案4】:我们在这里使用了几次zlib。这是一个相当标准的库,在大多数主要语言中都有实现。
【讨论】:
我不认为 zlib 可以创建包含多个文件的 ZIP 存档。它是一个压缩库,还包括创建一个文件的功能(以 gzip 的方式)。【参考方案5】:这个怎么样:
http://zziplib.sourceforge.net/
【讨论】:
【参考方案6】:http://www.info-zip.org/UnZip.html
HTH
【讨论】:
然而它是一个应用程序 所有的镜子都被冻结了。好像死了。【参考方案7】:其他人提到了 zlib,它很好而且相当简单。
7-Zip (LZMA) SDK 更复杂,但压缩率也非常好。
编辑:虽然仍处于开发阶段,但随着发布过程和历史的推移,我现在不太愿意推荐这个。
【讨论】:
从文档看来它只支持 7z 格式的档案。这是不真实的吗? @pqnet - 我使用 7zip。它适用于任何压缩格式(zip、7zip、.pkzip、tar、...等)我目前不推荐该 API,因为我没有使用它,但 7zip 应用程序运行良好。【参考方案8】:ZLIB - 世界上最便携的库。开源,非常成熟和可靠。黄金标准。 为什么要使用其他东西?
【讨论】:
... 因为它不处理 zip 文件?它只处理流压缩。 在 controb/minizip 目录中有 zip 实用程序。 @Cheeso 我认为你应该提到这一点。我没有意识到 minizip 包含在 zlib 中,除了“contrib”中还有很多其他好东西。所以,我觉得你可以编辑你的答案以更有帮助。 我确实在三年前的评论中提到过它!以上是关于用于 C/C++ 的便携式 zip 库(不是应用程序)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章