VS2003项目转VS2010之杂七杂八

1.第一个问题就是stdafx.h中声明的那些有关版本的宏,一些低版本已经不再支持了,具体版本可以参考错误提示;

2.输出文件路径与输出路径和输出名称不匹配的警告。VS2010要求在“属性-链接-常规”设置中的“输出文件”=在“属性-常规”设置的“输出目录”+“目标文件名”+“目标文件扩展名”,VS2010中的默认输出文件名为项目名称,在“属性”“常规”第一行,而之前的2003中并没有这个设置,所以这是第一个要改的东西,也是最麻烦的一个,你必须一个一个指定。另外就是输出目录,在VS2003中这个输出目录并没有多重要,主要是看你在“链接-常规”中的设置,但现在它起作用了,直接等于宏“TargetDir”,相应的“TargetPath”也改了。所以,除非你不使用这几个宏,不然就必须要改这些设置。另外提一句,在VS2010中输出目录和中间目录都要求以"\"结尾,还不支持“/”,貌似所有的路径都不支持"/"分隔符,所以大家小心了。

3.对链接后生成事件,那些拷贝命令可能报错,其实这就是上面的原因,因为我们使用了宏“TartetPath“ TartgetFileName”。

4.导入库引起的错误,好像VS2003中对导入库是默认忽略的,但VS2010却不是,必须设置为“是”。

5.循环变量在循环体外被引用引起的错误,这个是老生常谈了,因为从VS2005就改了,用过2005或2009的人都知道。

6.字符串操作函数引起的警告,这也是老问题,参照上一条。PS个人建议还是改一下比较好,毕竟那么多警告很恶心,而且也安全一些。当然你也可以屏蔽掉,但有点粗鲁了。

7.“error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int”,这个在2003中是支持的,所以你必须声明类型。

8.还有一个预编译头导致的问题,不知道什么原因,一些预编译头的设置没有了,直接是空的,还得手动设置一下。

9.DirectX库引起的编译错误。因为VS2010本身带有DX库,但版本较高,解决的办法可以是直接包含绝对路径,或者是在设置包含路径和库路径的时候把你所需要的DX路径放在最前面。

10.错误“LNK1179: 无效或损坏的文件: 重复的 COMDAT "_IID_IDispatchEx"”,解决方法,找到#import "Flash.ocx" named_guids改为#import "Flash.ocx" named_guids, exclude("IFlashObjectInterface"), exclude("IDispatchEx")详情可以点击链接,我这里就不再班门弄斧了。

11.在使用非VS2010编译的动态库的时候千万小心。比如我遇到的一个问题,有一个vector是动态库里定义的,用的是VS2003的版本,而子类中直接使用这个变量就出问题了,原因也很明显,就是vector的版本换了,幸亏我还保留了一个属性获取函数。让我欣慰的是整个项目中只有这一个变量出问题,看来我一直坚守得严谨编程是对的,尽可能地封装,尽可能地减少耦合性,平时你可能多花了些时间,但到了这种时候你就用的上了!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值