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

标签 c++ lzma

因此,尝试压缩 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;它似乎没有做任何事情。

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

最佳答案

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

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

相关文章:

Python 2.7 pyLZMA 工作,Python 3.4 LZMA 模块不工作

zip - 标准 ZIP 使用哪种算法?

c - Diab 编译器中的解析错误

c++ - 如何在C++中使用LZMA SDK?

c++ - 有没有你想要虚函数而不是纯虚函数的场景?

c++ - 在 Windows 启动时调用应用程序无法正常启动

c++ - 如何计算在 C++ 中创建的对象的数量

c++ - 在枚举中编写代码

c++ - int main 的返回代码 - 有上限吗?

javascript - 在客户端读取xz文件