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

来源:互联网 发布:linux 自动安装gcc 编辑:程序博客网 时间:2024/05/11 00:23

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

解决过程:

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

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

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

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

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

原创粉丝点击