FreeImage使用中的小插曲

2 篇文章 0 订阅
1 篇文章 0 订阅

  

  在制作一个小软件的过程中,需要显示各类的图片。于是下载了好评很多的FreeImage,简单的看了帮助之后,就开始工作了。一开始的时候,是在主线程中加载的,没有任何问题,加载图像、二次插值运算等都很快。于是,把代码移到后台线程执行,问题出现了,在FreeImage_Load的函数中,内存访问异常,指针出现了问题。以下是我的排查过程:
  • 首先检测入口参数,参数没有问题,问题依旧。
  • 怀疑加载的图片有问题,换成和主线程曾经用过的一样的图片,还是不行,排除图片的问题。
  • 反复在主线程和后台线程中执行,主线程没问题,后台异常,于是确定和线程相关。
  • 考虑到这个开源的系统不会连多线程都不支持吧,排除掉同步或者全局变量的问题。
  • 线程的栈空间是不是太小了,于是加大最小栈空间,问题依旧。
  • 在线程中的FreeImage_Load前后加锁,问题依旧。
  • 不使用静态库,使用动态库,用tdump导出FreeImage.dll的导出函数表,使用动态加载的方法,问题依旧。
  • 本来想使用FreeImage的源代码进行调试,可是文件太多,好多的问题,弄了一天也没有编译成功,于是放弃。
  • 最后一招,百度+谷歌,找不到有同样问题的帖子。

  三天了,实在想不出还有什么问题。突然想起,前两天为了加快编译连接速度,把动态链接库和包的选项都放成了使用外部包和库,心想也许和这个有关,于是重新设定为全编译,不使用外部包,竟然成功了。

  虽然现在可以运行了,但是还是不知道什么原因。如有高人知道问题的根源,请多读指点!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值