帮我从 zip 存档中提取文件。尝试使用 zlib,但未编译 minizip。想尝试 LZMA,但无法连接到该项目。我使用 VS C++ 2010。
谢谢你。
据 ai 所知,LZMA 可以处理整个 zip 档案,而 zlib 只能解压缩包含的数据。zip 存档是压缩文件的集合。因此,您需要先解析存档,然后才能解压缩包含的数据块(文件)。查看Wikipedia上的文件格式说明。
使用 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 的包装类的工作示例