LzmaSpec

package
v0.0.0-...-c07fb9f Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 9, 2024 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Overview

Package LzmaSpec

本文件照抄官方SDK: [https://www.7-zip.org/a/lzma-specification.7z] 本文件用法参考DecodeLzma.go

懒得将压缩代码也抄一份,因为平时代码多数用解压,需要压缩就用下面的jar包吧 lzma.jar: [https://www.7-zip.org/a/lzma2201.7z]的java代码打包 bash -x make_java.sh 打包java代码为jar文件 java -jar lzma.jar: 查看帮助 java -jar lzma.jar e a.txt a.lzma: 压缩a.txt到a.lzma java -jar lzma.jar d a.lzma a.txt: 解压a.lzma到a.txt

另外也可以用7z官网下载的lzma.exe来压缩和解压缩,但只是windows下用

Package LzmaSpec

本文件依赖LzmaUtil.c,是吧lzma2201\C\Util\Lzma\LzmaUtil.c里面改出来的 这个是Windows和Linux下都可以编译成功,在include目录下把lzma2201\C这里面的对应.h拷贝的 执行如下就可以编译出libLzmaUtil.a mingw32-make.exe -f makefile.util SOURCE=D:\code_project\c\lzma2201\C

Package LzmaSpec

注意本程序只适用于Windows下用,我已经试过Linux下编译不过 本程序和使用LZMA.dll方式的区别就是,使用静态编译,不需要依赖dll文件 执行如下命令,指定编译目录可以编译产生liblzma.a的静态库 mingw32-make.exe -f makefile.cgo SOURCE=D:\code_project\c\lzma2201\C 记得修改makefile里面的SOURCE路径,我已经将编译号的liblzma.a提交git了,大家随意使用 注意需要复制一系列头文件

Package LzmaSpec

[https://www.7-zip.org/a/lzma2201.7z]解压后lzma2201\C\Util\LzmaLib 使用vs2010打开LzmaLib.dsw,在配置管理器里面新建一个x64的release版本(产生dll比较小) 然后生成解决方案,会在C:\Util产生LZMA.dll文件

控制台命令生成lzma.dll cmd /k "D:\xxx\vcvars64.bat" 在cmd中生效vs各项配置 按照 https://www.cnblogs.com/janbar/p/15644092.html 文章 cd lzma2201\C\Util\LzmaLib nmake CPU=AMD64 NEW_COMPILER=1 MY_STATIC_LINK=1 就得到了lzma.dll

安装vs2010,可以用下面命令查看dll对外提供接口,只能查看函数名 dumpbin.exe -exports c:\Util\LZMA.dll 然后在这个\lzma2201\C\LzmaLib.h里面可以看到 LzmaCompress和 LzmaUncompress的定义 以及各种注意事项,下面用法就是从上面得到的

Index

Constants

View Source
const (
	LzmaResError                 = 0
	LzmaResFinishedWithMarker    = 1
	LzmaResFinishedWithoutMarker = 2
)
View Source
const (
	SzOk               = 0
	SzErrorData        = 1
	SzErrorMem         = 2
	SzErrorCrc         = 3
	SzErrorUnsupported = 4
	SzErrorParam       = 5
	SzErrorInputEOF    = 6
	SzErrorOutputEOF   = 7
	SzErrorRead        = 8
	SzErrorWrite       = 9
	SzErrorProgress    = 10
	SzErrorFail        = 11
	SzErrorThread      = 12
	SzErrorArchive     = 16
	SzErrorNoArchive   = 17
)

from 7zTypes.h

Variables

This section is empty.

Functions

func LoadLzmaDll

func LoadLzmaDll(file string)

func LzmaCompress

func LzmaCompress(r io.Reader, w io.Writer, useType UseType) error

LzmaCompress write {[5]byte porps} + {[8]byte fileLen} + {data}

func LzmaCompressUtil

func LzmaCompressUtil(src, dst string, mode UtilType) error

func LzmaUnCompress

func LzmaUnCompress(r io.Reader, w io.Writer, useType UseType) error

LzmaUnCompress read {[5]byte porps} + {[8]byte fileLen} + {data}

func NewCLzmaDecoder

func NewCLzmaDecoder(r io.Reader, w io.Writer) *cLzmaDecoder

Types

type UseType

type UseType byte
const (
	UseDll UseType = 1
	UseCgo UseType = 2
)

type UtilType

type UtilType byte
const (
	UtilDec UtilType = 1
	UtilEnc UtilType = 2
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL