7z源码编译

傻瓜教程——7z源码编译

7z源码下载

源码下载地址:https://www.7-zip.org/download.html
7z源码编译
如上图所示,选择红色标记的Download,进行下载。

VS工程生成

7z源码编译
将压缩包解压后,出现如上图所示4个文件夹,本贴主要说明其中的两个内容:7z命令行工具7za.exe7z.dll的编译。

7za.exe

7za.exe为7z的命令行工具,它支持命令行传参,进行相关压缩和解压工作,它能够使用7z工具的全部功能。

  1. 进入目录:\CPP\7zip\Bundles\Alone
    7z源码编译
  2. 双击如上图所示的VS工程文件,用VS打开该项目,以VS2019为例,双击后,会提示项目升级
    7z源码编译
  3. 直接点击确定,即可自行升级项目文件,进入VS
    7z源码编译
  4. 通常情况下会编译64位的项目,因此这里可以将工程改为64位
  5. 修改项目属性,将输出exe的名称改为7zad,并复制其上的输出目录(SolutionDir)(SolutionDir)(Platform)$(Configuration)
    7z源码编译
  6. 修改项目属性,将输出文件修改为(SolutionDir)(SolutionDir)(Platform)$(Configuration)\7zad.exe7z源码编译
  7. 如果此时直接编译,会有错误:fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
    7z源码编译
  8. 按如上图所示,将嵌入清单 ,改为 ,再次编译,即可编译成功。

7z.dll

  1. 进入目录 \CPP\7zip\Bundles\Format7zF
  2. 进行如上7za.exe的方式,更新并打开VS项目,并修改x86为x64
  3. 修改目录中的Asm-7zCrcOpt.asm的属性
    7z源码编译
    命令行改为:ml64.exe -Dx64 -WX -c -Fo(OutDir)(OutDir)%(Filename).obj %(FullPath) 输出改为:(OutDir)%(Filename).obj;%(Outputs)
    注意!建议复制上述修改结果,自行修改请确认为丢失或多出字符,比如:少%或多\什么的。
  4. 同样,修改Asm-AesOpt.asm的属性。改为如下图所示。
    7z源码编译
  5. 修改工程属性,目标文件名后加d,并复制输出目录
    7z源码编译
  6. 修改工程属性,将输出文件修改为如图所示。
    7z源码编译
    如果你不知道工程属性页面如何打开,那我告诉你,右键解决方案下,7z,下拉列表中选则属性。
  7. 至此,修改完毕,点击生成解决方案,编译成功。