linux下c使用lzma_使用 LZMA SDK

linux下c使用lzma_使用 LZMA SDK首先是 MinGW 调用 VC 编译出的 DLLLZMASDK4 65 默认是 VC 项目 懒得再写 makefile 了 就直接用 VS2008 编译吧 还好 压缩 解压核心代码是 C 的 为保证 DLL 最大兼容性 选用 cdecl 按 C 代码编译 得到 DLL 后 需要使用 MinGW 中自带的 dlltool 工具将其转为 a 文件 dlltool U DLZMA DLL dLZMA def lLZMA a 转换过

首先是MinGW调用VC编译出的DLL

LZMA SDK 4.65默认是VC项目,懒得再写makefile了,就直接用VS2008编译吧!还好,压缩/解压核心代码是C的,为保证DLL最大兼容性,选用__cdecl,按C代码编译。得到DLL后,需要使用MinGW中自带的dlltool工具将其转为.a文件: dlltool -U -D LZMA.DLL -d LZMA.def -l LZMA.a

转换过程,def文件是必须有的(从SDK中可以找到,找不到拿工具转),得到的.a文件很小,只有3K左右。然后使用“-L库文件路径”、“-l库文件名(不带.a)”作为参数来编译项目。注意,此路径下不可有与.a文件同名的.lib文件(记得编译DLL时生成的一个.lib文件吧?赶紧删了!),否则,会得到“undefined reference to…”的链接错误。 使用压缩函数LzmaCompress

本以为压缩函数的输出缓冲区与输入缓冲区相等就可以了,如果你压缩时该函数返回7(SZ_ERROR_OUTPUT_EOF)就说明压缩后的数据大于原数据。为了避免该错误出现,有两种选择:

1、出现该返回值时,说明压缩后的文件将大于压缩前的文件,可以考虑放弃使用压缩。

2、使得输出缓冲区大小至少为1.1×原数据大小 + 16K(使用LZMA算法,默认参数)/为1.001×原数据大小 + 32(使用LZMA2算法,该算法自动检测数据是否可压缩) LzmaCompress的输出结果

该函数的输出结果并不写文件头,我们可以使用props缓冲区的5bytes和*destLen的8bytes一起作为文件头。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231125.html原文链接:https://javaforall.net

(0)
上一篇 2026年1月27日 上午9:01
下一篇 2026年1月27日 上午9:22


相关推荐

  • 数据库主键和外键的作用_数据库外键约束的作用

    数据库主键和外键的作用_数据库外键约束的作用主键保证了数据的唯一性,外键保证了数据的完整性。主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。…

    2025年8月2日
    5
  • Spring Boot配置log4j记录日志

    Spring Boot配置log4j记录日志转载请注明出处 SpringBoot 配置 log4j 记录日志我们在老的项目框架 ssh springMVC 中都使用过 log4j 日志模块 例如 java 日志功能 log4j 模块的使用方法 SpringBoot 框架也能很好的快速集成 log4j 本篇文章记录如何在 SpringBoot 框架中使用 log4j 引入 log4j 依赖在创建 SpringBoot 工程时 我们引入了 spring boot st

    2026年1月22日
    3
  • c语言十进制转八进制程序_c语言八进制以什么开头

    c语言十进制转八进制程序_c语言八进制以什么开头二进制整数转八进制算法二进制整数转换为八进制整数时,每三位二进制数字转换为一位八进制数字,运算的顺序是从低位向高位依次进行,高位不足三位用零补齐。八进制整数转二进制算法八进制整数转换为二进制整数时,每一位八进制数字转换为三位二进制数字,运算的顺序也是从低位向高位依次进行。案例二进制整数转八进制将二进制整数1110111100转换为八进制,转换过程如下:我们将二进制的1110111100转…

    2025年6月21日
    8
  • POJ 2251-Dungeon Master(BFS)[通俗易懂]

    POJ 2251-Dungeon Master(BFS)

    2022年1月16日
    43
  • 金蝶K3-航天信息税控发票开票软件接口程序

    金蝶K3-航天信息税控发票开票软件接口程序##金蝶K3-航天信息税控发票开票软件接口程序用于从航天信息[上海爱信诺航天信息有限公司]税控发票开票软件(金税盘版)文本接口导出TXT文件中提取数据。###开发环境SharpDevelop5.0###调用库NPOI(用于EXCEL文件生成)###背景公司之前使用一个金蝶开发的…

    2022年6月8日
    148
  • pycharm最新激活码-激活码分享「建议收藏」

    (pycharm最新激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月28日
    86

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号