visualstudio-在将大型C++程序从VS2005转换为VS2008之前,我应该知道的任何事情

visual studio - Anything I should know before converting a large C++ program from VS2005 to VS2008?

本文关键字:我应该 之前 任何事 VS2008 大型 C++ 程序 转换 VS2005 visualstudio-      更新时间:2023-10-16

在将大型C++程序从VS2005转换到VS2008之前,我应该知道什么吗?

我现在正在处理这个问题。

运行WinMerge查看我更改了什么

好吧,这是我在一个巨大的Win32/MFC客户端应用程序中必须修复的问题:

一些MFC函数已经变成了虚拟的(如果我没有记错的话,它们在过去不是-CWind::GetMenu)。此外,与我们传统的鼠标滚轮支持有关的东西(在Windows内置鼠标滚轮支持之前)不知怎么坏了(我刚刚删除了这个功能,所以我从来没有真正弄清楚为什么会坏)。

一些ATL方法(或方法参数)已更改为最初不是的常量(搞砸了我的重写)。

平台SDK更新了——如果你正确设置了windows SDK版本号定义,请小心(我们并不是在所有地方都这样——这很愚蠢)。您现在可能正在使用较新版本(Vista/2008)的Win32结构进行构建。这在我的XP盒子上效果不太好。

STDMMETHOD现在包含了__declspec(nothrow),这是100%正确的——只是这在我们的代码中发现了一些问题。有些接口写得像是通过COM公开的,但从来没有公开过,引发了异常。

IDE有一个错误,如果你没有设置断点来突出显示整行,禁用的断点不会在页边空白处显示空心圆(我认为可能是VC++的默认值?)。

这些问题大多是由于我们代码中的细微错误或MFC/ATL库的严重过载造成的。既然其他人的代码都是完美的,那么你应该没事;)

在我的工作中,我们将一个大型C++项目从VS2005转换为VS2008。根本没有问题。不用说,你绝对应该保留一份旧项目的副本,以防万一。:)

编辑:我应该提到这个项目是独立于平台的,没有gui组件。

如果必须支持较旧的平台,请注意:VC2008是第一个不能针对Win9x或NT4的版本。正是出于这个原因,我的公司不得不坚持VC2005。

如果您的项目正在使用MFC,那么您应该意识到它在2008年进行了一次相当重大的更新,这可能会破坏一切。主要是安全和UI更新,所以在我看来还是值得做的。

请参阅此处以获取有关VS 2008中发生的变化的更多一般信息。

我最近将一个使用VC++5编写的项目转换为VS2008,这个项目我已经10年没有接触过了。我刚加载了这个项目,让VS2008转换它。一切都很顺利。(项目现在在这里:http://www.codeplex.com/Uptime)

根据我们的经验,项目转换得很好。我们遇到的唯一代码更改是删除了_MIN和_MAX的位置-我们不得不将其更改为std::MIN()等。我们的MFC程序编译得还可以。我们最头疼的是购买了VS 2008版本的第三方库,并构建了VS 2008版的大型开源包,如boost、OpenSceneGraph和GDAL。不是火箭科学,只是有点乏味。我在博客上写了一个简短的简介。

语法上是否存在不能简单重新编译的差异?VS将自动为您转换.sln和vcproj文件。剩下的只是代码,除非你正在做一些非常奇怪的事情,否则它应该按原样重新编译。