LZMA c++ 压缩大文件的问题

LZMA c++ problem with compression of large files

本文关键字:问题 文件 c++ 压缩 LZMA      更新时间:2023-10-16

所以尝试压缩一个 22gb 的文件,一切都适用于文件 <2~gb 我得到的错误:SZ_ERRROR_FAIL。

在几个断点中,我从 LzmaEnc.c:2946 得到这个,因为 'p->nowPos64' 显示的值为 4294958849

我知道这是 32 位无符号整数的最大值。我正在用 x64 编译,所以这应该不是问题。

使用 LZMA 1.9

有人告诉我,在这一切的某个地方,有一个 uint32 正在使用。我必须找到并替换为uint64。

从 7Z SDK 实现

实现示例:

int res = SZ_OK;
res = LzmaEncode(
(unsigned char*)&outBuf[LZMA_PROPS_SIZE + sizeof(DATASIZE)], &destLen,
(unsigned char*)&inBuf[0], inBuf.size(),
&props, 
(unsigned char*)&outBuf[0], &propsSize,
props.writeEndMark,
&g_ProgressCallback, &SzAllocForLzma, &SzAllocForLzma);
}

Iv 在查看更多源代码后阅读后添加了一个新的定义。_LZMA_SYSTEM_SIZE_T;它似乎什么也没做。

我缺少让 LZMA 正常工作 #define 吗?文档充其量是冗长的。

来自 7z impl. 的普通 LMZA 不支持 4GB>文件。 必须使用 LMZA2。