【问题标题】:LZMA c++ problem with compression of large filesLZMA c++ 压缩大文件的问题
【发布时间】: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 实现的链接?我认为有几个,也许不是所有的都有这个问题。

标签: c++ lzma


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多