【发布时间】:2019-11-03 17:01:57
【问题描述】:
所以尝试压缩一个 22gb 的文件,一切都适用于
几个断点,我从 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; 好像什么都没做。
我是否缺少#define 来让 LZMA 正常工作?文档充其量是很少的。
【问题讨论】:
-
有什么问题?
-
添加 LZMA 实现的链接?我认为有几个,也许不是所有的都有这个问题。