7z源码编译
7z源码下载
源码下载地址:https://www.7-zip.org/download.html
如上图所示,选择红色标记的Download,进行下载。
VS工程生成
将压缩包解压后,出现如上图所示4个文件夹,本贴主要说明其中的两个内容:7z命令行工具7za.exe和7z.dll的编译。
7za.exe
7za.exe为7z的命令行工具,它支持命令行传参,进行相关压缩和解压工作,它能够使用7z工具的全部功能。
- 进入目录:\CPP\7zip\Bundles\Alone
- 双击如上图所示的VS工程文件,用VS打开该项目,以VS2019为例,双击后,会提示项目升级
- 直接点击确定,即可自行升级项目文件,进入VS
- 通常情况下会编译64位的项目,因此这里可以将工程改为64位
- 修改项目属性,将输出exe的名称改为7zad,并复制其上的输出目录(Platform)$(Configuration)
- 修改项目属性,将输出文件修改为(Platform)$(Configuration)\7zad.exe
- 如果此时直接编译,会有错误:fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- 按如上图所示,将嵌入清单 是,改为 否,再次编译,即可编译成功。
7z.dll
- 进入目录 \CPP\7zip\Bundles\Format7zF
- 进行如上7za.exe的方式,更新并打开VS项目,并修改x86为x64
- 修改目录中的Asm-7zCrcOpt.asm的属性
命令行改为:ml64.exe -Dx64 -WX -c -Fo(OutDir)%(Filename).obj;%(Outputs)
注意!建议复制上述修改结果,自行修改请确认为丢失或多出字符,比如:少%或多\什么的。 - 同样,修改Asm-AesOpt.asm的属性。改为如下图所示。
- 修改工程属性,目标文件名后加d,并复制输出目录
- 修改工程属性,将输出文件修改为如图所示。
如果你不知道工程属性页面如何打开,那我告诉你,右键解决方案下,7z,下拉列表中选则属性。 - 至此,修改完毕,点击生成解决方案,编译成功。