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

时间:2008-10-28 13:49:30

标签: c++ visual-studio visual-c++

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

7 个答案:

答案 0 :(得分:8)

我正在研究这个问题。

运行WinMerge以查看我已更改的内容...

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

一些MFC功能已经变为虚拟(过去不是 - 如果我没记错的话,CWnd :: GetMenu)。还有一些与我们传统鼠标滚轮支持相关的东西(在Windows内置鼠标滚轮支持之前)某种程度上已经破坏了(我刚刚删除了这个功能,所以我从来没有弄清楚为什么会破坏它)。

一些ATL方法(或方法参数)已经改为const,而不是最初的(搞砸了我的覆盖)。

平台SDK更新 - 如果你正确设置Windows SDK版本#defines(我们并非在所有地方 - 这是愚蠢的),请小心。您现在可能正在使用Win32结构的较新版本(Vista / 2008)构建。这在我的XP盒子上没那么好用。

STDMETHOD现在包含了100%正确的__declspec(nothrow) - 除了这在我们的代码中发现了一些问题。一些像它一样的接口将通过COM公开,但从来没有,抛出异常。

IDE有一个bug,如果您没有将断点设置为突出显示整行(我认为是VC ++的默认值,也许?)。

这些问题大部分是由于代码中的细微错误或MFC / ATL库的过度重载造成的。由于其他人的代码都很完美,你应该没问题;)

答案 1 :(得分:2)

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

编辑:我应该提到该项目与平台无关,并且没有gui组件。

答案 2 :(得分:2)

如果您必须支持较旧的平台,请注意:VC2008是can't target Win9x or NT4的第一个版本。由于这个原因,我的公司必须坚持使用VC2005。

答案 3 :(得分:1)

如果您的项目使用MFC,那么您应该知道它在2008年有一个相当重要的更新,可能会破坏事情。主要是安全性和UI更新,所以我认为值得做。

有关VS 2008中更改内容的更多常规信息,请参阅here

答案 4 :(得分:0)

我最近转换了一个使用VC ++ 5编写的项目,这个项目在10年后我还没有触及VS2008。我刚加载项目并让VS2008转换它。一切都很顺利。 (现在在这里投射:http://www.codeplex.com/Uptime

答案 5 :(得分:0)

根据我们的经验,项目转换得很好。我们遇到的唯一代码更改是_MIN和_MAX被删除 - 我们必须将其更改为std :: min()等。我们的MFC编译好了。我们最头疼的是获得了我们购买的VS 2008版本的第三方库,并构建了VS 2008版本的大型开源软件包,如boost,OpenSceneGraph和GDAL。不是火箭科学 - 只是单调乏味。我写了一个简短的概要on my blog

答案 6 :(得分:-1)

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