Minizip 无法压缩大小 > 4 GB 的文件

问题描述 投票:0回答:1

我的程序使用minizip(zlib-版本1.2.3)来压缩xml文件。当xml文件大小大于4GB时(实际上 int 32 - 4294967295的最大值)然后我发现当我尝试提取压缩文件时它给了我一个意外的错误0x80004005(能够通过7zip提取)。 我相信拉链没有正常工作。 如果我检查 xml 文件的大小,则大小 =(文件中的总字节数)-(int32 的最大值)。请看截图。 压缩文件的大小,即减少 4 GB 后剩余的大小

现在介绍文件的压缩方式,我正在使用以下带有这些参数的 minizip 功能。如果你们知道大文件的 minizip 压缩出了什么问题,请给我建议

int returnVal = zipOpenNewFileInZip4(reinterpret_cast(m_pzipFile), 文件名, NULL, NULL, 0, NULL, 0, NULL, Z_DEFLATED, Z_DEFAULT_COMPRESSION, 0, -MAX_WBITS、DEF_MEM_LEVEL、Z_DEFAULT_STRATEGY、 NULL, 0, m_uGeneralflag);//Z_DEFLATED-0,Z_DEFAULT_COMPRESSION=-1,MAX_WBITS=15,DEF_MEM_LEVEL=8,Z_DEFAULT_STRATEGY=0

zipWriteInFileInZip(reinterpret_cast(m_pzipFile)// pBuffer,actualBufferSize)===>m-pzipFile void*,正在写入压缩文件的char*类型的pBuffer,actualBufferSize --int值,即pBuffer的大小 zipCloseFileInZip(reinterpret_cast(m_pzipFile))

可能的修复或问题意识,如何解决

compression zlib large-files minizip
1个回答
0
投票

您使用的是 13 年前的 zlib 版本。从 http://zlib.net/https://github.com/madler/zlib 获取当前版本(后者是您自己发布相同问题的地方!)并编译它。它有一个

zipOpenNewFileInZip4_64()
功能。

© www.soinside.com 2019 - 2024. All rights reserved.