本文是描述7z sdk 下C语言的开发使用。
在7zip一个开源的解压缩自由软件,在LGPL协议下,即自由使用,只要你没修改7z里面的源代码,仅仅作为库的引用,勿需公开你的源码。可惜在网上找类似的开发7zip教程解压缩太少,如应用起来也需要折腾一段时间,本文应运而生。
特征
不介绍了官方挺细的。地址:http://sparanoid.com/lab/7z/中文介绍。
支持语言:(C、C++、C#、Java),因为C语言,so它是可以跨平台的,在安卓是可以使用的,比如你用来打包游戏资源,虽安卓apk包本来就是压缩包。
缺点,或者也解压的软件都有通用的特点,就是需要速度,解压的速度是消耗时间,当然有的解压压软件做的速度上杠杠,压缩率就会低。7zip做为相对高压缩率的,它的解压速度有点慢。
VS2013工程生成
- SDK下载http://sparanoid.com/lab/7z/sdk.html
- 路径lzma1505CUtil7z,右击7z.dsp用vs2013
- 修改项目属性:
- 通用->输出目录修改:$(SolutionDir)$(Configuration).win32
- 通用->中间目录修改:$(Configuration).win32
- 链接库->一般修改:$(OutDir)$(ProjectName).exe
- 退出的时保存默认sln路径
源码说明
本节通过例子来阐述LZMA SDK的使用。项目属性->调试->命令参数
压缩包内容列表
“l” “lzma1505.7z”
解压
“x” “lzma1505.7z”
应用到游戏
思路,笔者没去实现也本想很cocos2d-x里面做个结合,据其他游戏引擎加载压缩包资源也是类似步骤。
- add压缩包到游戏资源
- 建立map容器:把压缩包文件内容映射进去
- 游戏加载的时候通过map查找是否存在这个文件,是加载,分之再从游戏指定的目录搜索文件
- 是否需要多线程加载?这点是个补充,多线程加载利于不卡住渲染主线程