1

帮我从 zip 存档中提取文件。尝试使用 zlib,但未编译 minizip。想尝试 LZMA,但无法连接到该项目。我使用 VS C++ 2010。

谢谢你。

4

3 回答 3

1

如果您对仅限 Windows 的解决方案感到满意,我发现XZip非常易于使用。你只需要在你的项目中添加XUnzip.h/.cpp,没有别的,没有其他的依赖。

还有miniz,它是便携式的,但我还没有尝试过(还)。

于 2013-10-22T08:05:43.667 回答
0

据 ai 所知,LZMA 可以处理整个 zip 档案,而 zlib 只能解压缩包含的数据。zip 存档是压缩文件的集合。因此,您需要先解析存档,然后才能解压缩包含的数据块(文件)。查看Wikipedia上的文件格式说明。

于 2013-10-05T06:04:13.950 回答
0

使用 zlib,您可以执行以下操作:

#define ZLIB_WINAPI
#include <zlib.h>
#include <contrib\minizip\unzip.h>
#pragma comment(lib, "zlibwapi.lib")


bool decompress(void* dest, unsigned long* pcbDest, const void* src, size_t cbSrc)
{
    return uncompress((Bytef*)dest, pcbDest, (const Bytef*)src, cbSrc) == Z_OK;
}

另请参阅代码项目中 Gilles Volant 的 Zip/Unzip API 的包装类的工作示例

于 2013-10-05T06:09:15.080 回答