关于7z类库编译的那些事儿

众所周知,7z是一个很好的压缩类库,不仅支持多种压缩格式的压缩和解压,还支持多种压缩算法,并提供多线程压缩,乃是居家旅行之良备!

资料

7z源码(中文镜像地址):https://sparanoid.com/lab/7z/download.html

开发环境:Windows 10

编译工具:visual stdio 2015

目录结构

.
├── Asm —— 汇编源码
│   ├── arm
│   └── x86
├── C —— C语言源码
│   └── Util
│       ├── 7z
│       ├── 7zipInstall
│       ├── 7zipUninstall
│       ├── Lzma
│       ├── LzmaLib
│       └── SfxSetup
├── CPP —— C++源码
│   ├── 7zip
│   │   ├── Archive —— 压缩格式相关的文件
│   │   │   ├── 7z
│   │   │   ├── Cab
│   │   │   ├── Chm
│   │   │   ├── Common 
│   │   │   ├── Icons
│   │   │   ├── Iso
│   │   │   ├── Nsis
│   │   │   ├── Rar
│   │   │   ├── Tar
│   │   │   ├── Udf
│   │   │   ├── Wim
│   │   │   └── Zip
│   │   ├── Bundles ——————————————其他模块的包
│   │   │   ├── Alone ———————————— 7za.exe:独立的zip版本(只支持 7z/xz/cab/zip/gzip/bzip2/tar.)
│   │   │   ├── Alone7z ———————————7zr.exe: 独立的zip缩减版本  (只支持7z)
│   │   │   ├── Fm  ——————————————— 独立zip的文件管理系统
│   │   │   ├── Format7z —————————— 7za.dll: 支持 .7z 
│   │   │   ├── Format7zExtract———— 7zxa.dll:支持 .7z , 只支持解压
│   │   │   ├── Format7zExtractR —— 7zxr.dll:支持 .7z , 缩减版, 只支持解压
│   │   │   ├── Format7zF—————————— 7z.dll: 支持所有格式
│   │   │   ├── Format7zR ————————— 7zr.dll: 支持 .7z , 缩减版
│   │   │   ├── LzmaCon ——————————— lzma.exe: LZMA 压缩/解压
│   │   │   ├── SFXCon ———————————— 7zCon.sfx:  7z SFX 模块 控制台版
│   │   │   ├── SFXSetup —————————— 7z.sfx: Windows 7z SFX 模块
│   │   │   └── SFXWin —————————————  7zS.sfx: Windows 7z SFX 模块的安装
│   │   ├── Common —— 7-zip的常用模块
│   │   ├── Compress —— 压缩/解压相关文件
│   │   ├── Crypto  —— 加密/解密相关文件
│   │   └── UI
│   │       ├── Agent —— 中介模块插件和浏览器插件
│   │       ├── Client7z —— 7za.dll 的测试应用
│   │       ├── Common —— 常用 UI 文件
│   │       ├── Console —— 7z.exe : 控制台版本
│   │       ├── Explorer —— 7-zip.dll: 7-Zip 脚本拓展
│   │       ├── Far  —— Far Manager 插件
│   │       ├── FileManager —— 7zFM.exe: 7-Zip 文件管理器
│   │       └── GUI —— 7zG.exe: 7-Zip GUI版本
│   ├── Common —— C++项目常用文件
│   └── Windows —— Windows相关文件
│       └── Control
└── DOC
	├── 7zC.txt 
    ├── 7zFormat.txt —— 7z 的格式描述
    ├── 7zip.hhp
    ├── 7zip.inf
    ├── 7zip.nsi —— NSIS 安装脚本
    ├── 7zip.wxs —— XS 安装脚本
    ├── License.txt 
    ├── Methods.txt —— 压缩方法 IDs
    ├── copying.txt —— GNU LGPL 许可
    ├── lzma.txt —— LZMA 压缩算法说明
    ├── readme.txt —— 源码结构说明
    ├── src-history.txt ——  发布版本历史说明
    └── unRarLicense.txt —— 对 unRAR 部分源码的 许可

编译

找到对应工程的dsp,选择使用visual stdio 2015 启动,默认升级选项。

编译过程中会出现:error LNK1181: 无法打开输入文件“.\Debug\\.obj”

解决办法:

https://blog.csdn.net/lacoucou/article/details/70807990?utm_source=blogxgwz6
http://www.cnblogs.com/lniwn/p/7z-VSbuild.html
http://stackoverflow.com/questions/12387701/error-lnk1104-obj-file-without-any-file-name
http://stackoverflow.com/questions/4000772/visual-studio-2010-link-fatal-error-lnk1181-cannot-open-input-file-obj
https://www.itdaan.com/blog/2014/01/04/229fd3b6633987e56d1ba51628d43f70.html

但是实测都不管用,但查找许多资料后找到一种可行方法:

  1. 选择解决方案里的”7Z“项目后,点击菜单栏的”项目“->”生成自定义“,勾选”masm“,按”确定“
  2. 选中项目里的ASM\7zCrcOpt.asm 和 ASM\AesOpt.asm,右键”属性“->”常规“->”项类型“,选择”Microsoft Macro Assembler“,按”确定“
  3. 右键项目”7z“,选择”链接器“,”输出文件“改为$(OutDir)$(TargetName)$(TargetExt)
  4. ”链接器“->”映像具有安全异常处理程序“,改为”否“

如果出现:错误 5 error CVT1100: 资源重复。类型: MANIFEST,名称: 2,语言: 0x0409

点击菜单栏的项目------>属性------>清单工具------>输入输出------>嵌入清单------>选择否就行了

如果实在编译不行,就之间下载大佬编译好的类库吧:https://github.com/charygao/7z1604-srcWithVs2015Up3

你可能感兴趣的:(其他,7zip,windows,visual,studio)