编译zlib,解决_inflate_fast函数的问题

从zlib官网https://www.zlib.net/fossils/下载最新版.

解压缩后,在.\contrib\vstudio文件夹下,找到相应VS对应版本的工程文件,打开编译.

使用默认的配置编译为dll,项目中有部分代码是汇编写的,需要在项目属性的链接器命令中输入/SAFESEH:NO,关闭VC的内存溢出安全检查,不然会出现一些错误.

编译完dll后,在minizip或miniunz中测试很好用,但是由于项目的需要,需要使用静态版的zip.lib.

在zlibvc项目属性中,把"配置类型"由动态库dll改为静态库lib,编译很顺利,不需要改其他东西.

编译miniunz时,发现了一个比较头疼的提示,

error LNK2019: 无法解析的外部符号 _inflate_fast,该符号在函数 _inflate@8 中被引用

查看inflate.c文件确实有一处调用了inflate_fast函数,从函数的定义什么没看出什么异常,没办法,只能回到dll的状态,跟进去调试,居然转到inffas32.asm文件中,看了看相关的引用,不知inflate_fast函数是咋给弄到这儿的?人外有人啊...

到此才明白,应该是在编译为静态库的时候,并没有把inffas32.asm文件的obj链接进去.

回到lib状态,找到inffas32.obj文件,在miniunz工程属性的连接器页,把inffas32.obj加到附加依赖项中,注意路径,不懂的话可以把inffas32.obj复制到ZlibDllDebug下,按照x86\ZlibDllDebug\inffas32.obj;输入即可.同时也需要在命令行页面中输入/SAFESEH:NO 

然后编译,顺利通过.

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值