解决VC9.0的程序无法在vista上正常运行的问题

几天前将手上的一个项目从Xp平台上移植到Vista平台上,这个过程中遇到了一些问题,特将这些问题记录下来。原来的项目是在Xp平台下用VS.Net2003开发的,为了可以使编译出来的程序能够在vista系统上正确运行,就必须升级编译工具。所以找了一台vista系统的电脑,并安装上了微软最新的VS.net2008。由于编译器是从VC7.1直接升级到VC9.0,所以代码部分很多部分还是需要改动的,否则无法顺利生成成功。不过比较了一下,好像VC8.0和VC9.0之间对语法的要求变化不大,还没有VC7.1和VC8.0之间的变化大。根据错误提示一一将现有的问题修改后,程序基本上就OK了,能正常编译了,不过警告很多,大多是由于使用了增强的函数,不建议使用旧函数库的警告,和其他一些数据类型的警告。程序可以编译以后,并不代表就可以无错运行了,还需要根据运行测试情况进行进一步的修改。在修改的过程中,分别使用过VS2005和VS2008。感觉VS2005跟VS2008相比,还是VS2008更好用一些。在VS2005上查找和替换还有对错误的提示功能都很不方便,跟VS2003相比都差了一些。不过VS2008就更好用的多,无论是对错误的提示还是代码的查找上来说,都比VS2003和VS2005进步很多。修改完以后,基本上就差不多了,现在自己的平台上测试下,没有问题以后就打包可以给别人测试了。另外打包的程序还需要到微软下载了一个叫VCRedist—X86的Microsoft Visual C++ 2008 Redistributable Package。经过测试后程序没有问题,但是每次在没有运行环境的电脑上每次都要安装这个“可在发行组件包”,很麻烦。于是准备制作成绿色免安装版本的,在程序安装的时候跟着程序一起安装到测试的电脑上。找来原来的程序文件,把之前的的MFC7.1等XP环境下使用的dll文件删除,然后找到MFC90.dll等文件拷贝到程序目录中。经过测试发现程序报错,并且在测试中发现程序不支持64位平台。经过多次测试后发现,所有的程序运行错误都是根据“可在发行组件包”有关,看来是某些文件遗漏了。重新将需要的文件一一放入后,程序无错运行。
现在将其中遇到几点问题整理一下:
1.由于增强了语法检查和运行中参数检测,之前很多在VC7.1下运行正常的程序,在VC9.0中都无法运行,程序报错。最主要的几个特征包含@变量没有初始化或者是初始化错误@程序调用了已经释放的内存@指针指向了错误的地址。VC9.0对程序的检测更加严格,当然在程序编写上要求更高一些。
2.代码在编译生成之前,尽量修改编译环境中的一些选项为静态类型,这样可以避免客户机器上因为无法找到相应的dll文件而导致程序错误。另外程序在生成之前,一定要注意修改CPU类型,否则程序可能在某些CPU下无法运行,造成程序运行出错。
3.如果项目中的全部代码不全,或者是程序使用了一些其他的DLL文件,最好不要删除之前的相关的支持DLL文件,否则可能由于DLL版本不同,运行中出现不同的错误信息。
4.由于其他原因,部分问题还待于解决;其中包括同时支持Vista和Xp的程序,同时支持Vista下86和64版本的程序,目前仅支持Vista平台下的86位版本,与XP系统还不兼容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值