QQ登录

只需一步,快速开始

7zip库编译为动态库静态库成功方法分享

[ 复制链接 ]
7-Zip有些人简叫作7z,介绍说是支持压缩格式最多,压缩率最好的一个开源库。
你日常能见到的格式如rar,zip,它都他妈支持。
白漂乃我等穷吊事本色。
于是我从官网下载了个源代码工程.
https://www.7-zip.org/download.html
当前还有其他格式供下载,如EXE,DLL,
及其他系统用的格式,我下载了“any / Windows        7-Zip Source code
解压后的目录到处都有详细介绍,它自带的文档在DOC内。
我要生成动态库DLL,静态库LIB。
所以我直接进入文件夹7Zip\CPP\7zip\Bundles\Format7zF,
用VS2019打开工程文件,工程文件是Format7z.dsw,这是VC6.0工程。
管他直接双击打开编译。
编译不过,
折腾再三,编译还是不过。
折腾四五,编译仍旧不过。

白漂是我等穷吊事本色, 死瞌也是咱吊事特色。
于是,结果正常编译成功,如下图,生成了动态库文件7z.dll
于是,就可以在此基础上生成静态库,或64位啥的文件。
这里记录下问题解决过程。
2022-06-19_165342.jpg

1.汇编文件属性设置。
2022-06-19_170808.jpg
VS2019打开工程,在类视图,资源视图,解决方案资源管理器找找。
7zAsm.asm,7zCrcOpt.asm,AesOpt.asm,Sha1Opt.asm,Sha256Opt.asm。
后4个汇编文件属性要自行设置,可能版本不同,文件数量会不一样。
属性->常规->项类型,都设置为Microsoft Macro Assembler而不用"自定义生成工具"。
设置一项都点击应用按钮,生效一下。
同界面下Object File 选项卡,Object File Name,宏错误所以其OBJ文件名不对。
所以设置为正常的如$(IntDir)7zCrcOpt.obj,名称在Command Line选项卡下有。
这是编译文件要设置的地方。


2.生成自定义设置。
VS2019,菜单->项目->汇编文件属性...;
弹出的对话框设置如下图.

生成自定义设置

生成自定义设置


3.一箩筐的项目属性设置。
打开当前项目属性设置窗口。
3.1 C/C++->常规->将警告视为错误。将是,选择设置为否。
3.2 C/C++->代码生成-》启用函数级链接;将否,选择设置为是。
3.3 链接器->常规->输出文件; 设置为;从父级或项目默认设置继承
(或直接用此宏$(OutDir)$(TargetName)$(TargetExt))

3.4 链接器->高级->映像具有安全异常处理程序;将是,设置为否;
3.5 清单工具->输入和输出-》嵌入清单; 将是,设置为否。

4.都设置完成后,正常编译通过。
还不过,出去抽根烟,祈祷几分钟再对着仔细重新设置一遍、
回复

使用道具 举报

大神点评(2)

ycxlzhb 2022-6-19 18:06:12 显示全部楼层
错误 D8016 “/ZI”和“/Gy-”命令行选项不兼容
怎么设置?
找了一圈, 可以二选一设置下。
项目属性设置窗口。
C/C++->常规-》调试信息格式;设置为程序数据库(/Zi);


C/C++->代码生成,启用函数级链接; 设置为是(/Gy)

应用,完成设置。

VS菜单->清理解决方案,重新生成;

回复

使用道具 举报

haldong 2022-6-19 18:18:35 显示全部楼层
ycxlzhb 发表于 2022-6-19 18:06
错误 D8016 “/ZI”和“/Gy-”命令行选项不兼容
怎么设置?
找了一圈, 可以二选一设置下。

错误        LNK1123        转换到 COFF 期间失败: 文件无效或损坏       
GUI        G:\BackupFiles\Softwares\7Zip\CPP\7zip\UI\GUI\LINK        1       

遇到这种错误应该怎么办,
点击“项目”--》“属性”--》“清单工具”
输入和输出’--》‘嵌入清单’,后面的‘是’改成‘否’就可以了


回复

使用道具 举报

点击查看
快速回复 返回列表 客服中心 搜索