gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 12:31:19 25 4
gpt4 key购买 nike

所以尝试压缩一个 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);
}

我在查看更多源代码后阅读后添加了一个新的定义。 _LZMA_SYSTEM_SIZE_T; 它似乎没有做任何事情。

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

最佳答案

来自 7z impl 的普通 LMZA。不支持大于 4gb 的文件。必须使用 LMZA2。

关于c++ - LZMA c++ 压缩大文件的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58514791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com