关于Zlib库里的uncompress(不是compress!)返回Z_STREAM_ERROR(-2)的问题

时间:2021-02-13 09:08:26
有没有精通Zlib和libpng的人帮忙解释下原因么?

因为Zlib的h文件里没有说明uncompress返回-2是什么原因,只有compress和compress2有,所以一头雾水
至于代码是平常测试下就能通过,问题是在引入libpng16.lib的时候产生的

曾经尝试过使用单独的zlib是可以正确解压的(返回0),但是引入libpng16.lib的时候,可能是由于libpng16自带一个Zlib吧,两个静态库不能同时引入,否则提示重定义FETAL ERROR,所以只好把Zlib库取消引用了,结果测试那个程序。。解压的时候就返回-2了。如果不引用libpng16而只引用Zlib,解压正常……大概就是这样。
希望高手能解释下原因,或者提出一个处理方法,允许同时使用Zlib和libpng16

3 个解决方案

#1


全部使用动态库。

#2


引用 1 楼 zhao4zhong1 的回复:
全部使用动态库。


不想用动态库……都是静态库的

#3


引用 楼主 u010274704 的回复:
有没有精通Zlib和libpng的人帮忙解释下原因么?

因为Zlib的h文件里没有说明uncompress返回-2是什么原因,只有compress和compress2有,所以一头雾水
至于代码是平常测试下就能通过,问题是在引入libpng16.lib的时候产生的

曾经尝试过使用单独的zlib是可以正确解压的(返回0),但是引入libpng16.lib的时候,可能是由于libpng16自带一个Zlib吧,两个静态库不能同时引入,否则提示重定义FETAL ERROR,所以只好把Zlib库取消引用了,结果测试那个程序。。解压的时候就返回-2了。如果不引用libpng16而只引用Zlib,解压正常……大概就是这样。
希望高手能解释下原因,或者提出一个处理方法,允许同时使用Zlib和libpng16


ps。
重新阐述一下问题:
同时使用zlib库和libpng库时,libpng库么有任何问题(可以读写PNG文件),但是zlib库里的compress和uncompress都会返回-2也就是Z_STREAM_ERROR(引用顺序不对会产生重定义,这个问题已解决)
如果不引用libpng库时,zlib工作正常,可以正常解压和压缩(但有关PNG读写的语句要去掉,否则提示未正确加载符号)。

#1


全部使用动态库。

#2


引用 1 楼 zhao4zhong1 的回复:
全部使用动态库。


不想用动态库……都是静态库的

#3


引用 楼主 u010274704 的回复:
有没有精通Zlib和libpng的人帮忙解释下原因么?

因为Zlib的h文件里没有说明uncompress返回-2是什么原因,只有compress和compress2有,所以一头雾水
至于代码是平常测试下就能通过,问题是在引入libpng16.lib的时候产生的

曾经尝试过使用单独的zlib是可以正确解压的(返回0),但是引入libpng16.lib的时候,可能是由于libpng16自带一个Zlib吧,两个静态库不能同时引入,否则提示重定义FETAL ERROR,所以只好把Zlib库取消引用了,结果测试那个程序。。解压的时候就返回-2了。如果不引用libpng16而只引用Zlib,解压正常……大概就是这样。
希望高手能解释下原因,或者提出一个处理方法,允许同时使用Zlib和libpng16


ps。
重新阐述一下问题:
同时使用zlib库和libpng库时,libpng库么有任何问题(可以读写PNG文件),但是zlib库里的compress和uncompress都会返回-2也就是Z_STREAM_ERROR(引用顺序不对会产生重定义,这个问题已解决)
如果不引用libpng库时,zlib工作正常,可以正常解压和压缩(但有关PNG读写的语句要去掉,否则提示未正确加载符号)。