开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 12320|回复: 46
收起左侧

【完美解决方案】易语言5.6[图像格式转换支持库]与易语言核心库冲突

[复制链接]
结帖率:0% (0/1)
发表于 2017-1-7 01:10:26 | 显示全部楼层 |阅读模式   湖北省十堰市
本帖最后由 anyuezhiji 于 2017-1-7 01:12 编辑

最近比较忙,很长时间没碰易语言了今天应朋友要求升级某易语言编写的软件,
顺便把易语言升级到了5.6,结果静态编译报错如下:
  1. libpng.lib(pngrtran.obj) : error LNK2005: _png_set_crc_action already defined in krnln_static.lib(pngrtran.obj)
  2. libpng.lib(pngrtran.obj) : error LNK2005: _png_set_background already defined in krnln_static.lib(pngrtran.obj)
  3. libpng.lib(pngrtran.obj) : error LNK2005: _png_set_strip_16 already defined in krnln_static.lib(pngrtran.obj)
  4. libpng.lib(pngrtran.obj) : error LNK2005: _png_set_strip_alpha already defined in krnln_static.lib(pngrtran.obj)
  5. libpng.lib(pngrtran.obj) : error LNK2005: _png_set_gamma already defined in krnln_static.lib(pngrtran.obj)
  6. libpng.lib(pngrtran.obj) : error LNK2005: _png_set_expand already defined in krnln_static.lib(pngrtran.obj)
  7. libpng.lib(pngrtran.obj) : error LNK2005: _png_set_palette_to_rgb already defined in krnln_static.lib(pngrtran.obj)
  8. libpng.lib(pngrtran.obj) : error LNK2005: _png_set_tRNS_to_alpha already defined in krnln_static.lib(pngrtran.obj)
  9. libpng.lib(pngrtran.obj) : error LNK2005: _png_set_gray_to_rgb already defined in krnln_static.lib(pngrtran.obj)
  10. libpng.lib(pngrtran.obj) : error LNK2005: _png_set_rgb_to_gray already defined in krnln_static.lib(pngrtran.obj)
  11. libpng.lib(pngrtran.obj) : error LNK2005: _png_set_rgb_to_gray_fixed already defined in krnln_static.lib(pngrtran.obj)
  12. libpng.lib(pngrtran.obj) : error LNK2005: _png_set_read_user_transform_fn already defined in krnln_static.lib(pngrtran.obj)
  13. libpng.lib(pngrtran.obj) : error LNK2005: _png_init_read_transformations already defined in krnln_static.lib(pngrtran.obj)
  14. libpng.lib(pngrtran.obj) : error LNK2005: _png_read_transform_info already defined in krnln_static.lib(pngrtran.obj)
  15. libpng.lib(pngrtran.obj) : error LNK2005: _png_do_read_transformations already defined in krnln_static.lib(pngrtran.obj)
  16. libpng.lib(pngrtran.obj) : error LNK2005: _png_build_grayscale_palette already defined in krnln_static.lib(png.obj)
  17. libpng.lib(pngrtran.obj) : error LNK2005: _png_build_gamma_table already defined in krnln_static.lib(png.obj)
  18. libpng.lib(pngtrans.obj) : error LNK2005: _png_set_bgr already defined in krnln_static.lib(pngtrans.obj)
  19. libpng.lib(pngtrans.obj) : error LNK2005: _png_set_swap already defined in krnln_static.lib(pngtrans.obj)
  20. libpng.lib(pngtrans.obj) : error LNK2005: _png_set_packing already defined in krnln_static.lib(pngtrans.obj)
  21. libpng.lib(pngtrans.obj) : error LNK2005: _png_set_packswap already defined in krnln_static.lib(pngtrans.obj)
  22. libpng.lib(pngtrans.obj) : error LNK2005: _png_set_shift already defined in krnln_static.lib(pngtrans.obj)
  23. libpng.lib(pngtrans.obj) : error LNK2005: _png_set_interlace_handling already defined in krnln_static.lib(pngtrans.obj)
  24. libpng.lib(pngtrans.obj) : error LNK2005: _png_set_filler already defined in krnln_static.lib(pngtrans.obj)
  25. libpng.lib(pngtrans.obj) : error LNK2005: _png_set_swap_alpha already defined in krnln_static.lib(pngtrans.obj)
  26. libpng.lib(pngtrans.obj) : error LNK2005: _png_set_invert_alpha already defined in krnln_static.lib(pngtrans.obj)
  27. libpng.lib(pngtrans.obj) : error LNK2005: _png_set_invert_mono already defined in krnln_static.lib(pngtrans.obj)
  28. libpng.lib(pngtrans.obj) : error LNK2005: _png_do_invert already defined in krnln_static.lib(pngtrans.obj)
  29. libpng.lib(pngtrans.obj) : error LNK2005: _png_do_swap already defined in krnln_static.lib(pngtrans.obj)
  30. libpng.lib(pngtrans.obj) : error LNK2005: _png_do_packswap already defined in krnln_static.lib(pngtrans.obj)
  31. libpng.lib(pngtrans.obj) : error LNK2005: _png_do_bgr already defined in krnln_static.lib(pngtrans.obj)
  32. libpng.lib(pngtrans.obj) : error LNK2005: _png_set_user_transform_info already defined in krnln_static.lib(pngtrans.obj)
  33. libpng.lib(pngtrans.obj) : error LNK2005: _png_get_user_transform_ptr already defined in krnln_static.lib(pngtrans.obj)
复制代码
即[图像格式转换支持库 2.0版]的libpng.lib(pngtrans.obj)和[易语言的核心库]的krnln_static.lib(pngtrans.obj)冲突了
具体的说,就是_png_set_crc_action等33个函数在libpng.lib(pngtrans.obj)和krnln_static.lib(pngtrans.obj)中重复定义


上网找了下解决方案,发现大概有以下3种:
1、取消[图像格式转换支持库 2.0版],用其他api函数来处理图像格式转换
2、把krnln_static.lib降回5.5版
3、将支持库做成DLL再封装成EC模块,但是多了个dll


以上3种方案都不完美,还是自己动手丰衣足食吧
[图像格式转换支持库 2.0版]相关文件如下:
易语言\lib\eImgConverter.fne
易语言\static_lib\eImgConverter_static.lib
易语言\static_lib\eImgConverter\jpeglib.lib
易语言\static_lib\eImgConverter\libpng.lib←冲突的lib
易语言\static_lib\eImgConverter\libtiff.lib
易语言\static_lib\eImgConverter\zlib.lib


对,就是她,就是libpng.lib和krnln_static.lib闹别扭了
怎么办?
不就是函数名冲突了么?把libpng.lib的函数名改了不就ok了么
QQ图片20170107010006.png
我这里用的EmEditor,当然你也可以用UE等编辑软件


QQ截图20170107010352.png


接下来,我把那33个函数全部从_png_XXX替换成png__XXX
保存,然后再静态编译,果然没报错了


如果你也遇到了同样的问题,可以自己手动改名
如果嫌麻烦的话,也可以下载我修改过的
libpng.rar (100.27 KB, 下载次数: 658)

评分

参与人数 3好评 +2 精币 +4 收起 理由
恶魔天尊 + 1 + 1 新技能已get√
1636848518 + 1 感谢分享,很给力!~
冰点 + 1 + 2 感谢分享,很给力!~

查看全部评分


结帖率:100% (1/1)

签到天数: 1 天

发表于 2023-7-16 21:49:18 | 显示全部楼层   广东省佛山市
感谢分享!!!!
回复 支持 反对

使用道具 举报

发表于 2023-1-28 14:38:39 | 显示全部楼层   浙江省湖州市
完美解决,谢谢
回复 支持 反对

使用道具 举报

结帖率:100% (1/1)

签到天数: 1 天

发表于 2023-1-28 01:48:56 | 显示全部楼层   广东省佛山市
感谢分享!!!!!
回复 支持 反对

使用道具 举报

发表于 2023-1-9 06:13:11 | 显示全部楼层   广东省广州市
#在这里快速回复#突,亦可以依此例处理
回复 支持 反对

使用道具 举报

签到天数: 4 天

发表于 2022-10-9 11:51:53 | 显示全部楼层   北京市北京市
感谢大神
回复 支持 反对

使用道具 举报

发表于 2022-7-19 15:51:56 | 显示全部楼层   上海市上海市
精易论坛什么都有
回复 支持 反对

使用道具 举报

发表于 2021-3-20 14:42:00 | 显示全部楼层   湖北省武汉市
谢谢老师的讲解,真好
回复 支持 反对

使用道具 举报

发表于 2021-3-20 14:41:45 | 显示全部楼层   湖北省武汉市
我刚遇到这个问题,一下子就有答案了,真棒
回复 支持 反对

使用道具 举报

结帖率:88% (7/8)
发表于 2019-5-12 14:48:45 | 显示全部楼层   广西壮族自治区南宁市
啊!感谢大神啊!!昨晚我也碰到这个问题,找了半天没找到解决办法,百度找了半天找到这个帖子!!!解决了!!
回复 支持 反对

使用道具 举报

发表于 2019-1-25 14:27:04 | 显示全部楼层   广东省广州市
好动西好顶一下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表