今天解决了一个问题:GDI库版本不一致

问题描述:报表程序包括这样一个功能,在对话框上画设备的运行状态图,然后利用GDI库将对话框上的图谱保存到文件中,存为bitmap格式,调用了GetDIBits函数,报表程序在我的开发用机上运行正常,可是换到其它机器上时候,出现的内存访问非法的错误

解决过程:

1、加MsgBox确定出错的代码,确定在GetDIBits函数调用

2、查MSDN,GetDIBits函数在GDI32.dll中,该dll在system32下面,查两个机器上的版本,版本不一致。

3、从网上搜索GetDIBits函数,发现该函数调用之前,需要为图谱分配内存,而旧版本的GDI需要分配大于图谱长*宽的内存,而新版本的GDI只需要分配长*宽的内存就够了。

4、在第三步的基础上,增加内存分配,问题解决。

总结:经常遇到自己开发的软件在自己机器上调试运行没有问题,或者debug没有问题,但release版本有问题,很有可能的原因是MFC里面的dll版本不一致,不同的dll版本对需要分配的内存大小也不一致。仔细比对,多花时间和经历,也许问题就能解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值