在转换大型C++;从VS2005到VS2008的计划? 在将一个大型C++程序从VS2005转换成VS2008? < P>,有什么不同的语法,你不能简单地重新编译吗?VS将自动为您转换.sln和vcproj文件。剩下的只是代码,除非你做了一些奇怪的事情,否则它应该只是按原样重新编译。< P>在我的工作中,我们把一个大型的C++项目从VS2005转换成了VS2008。根本没有问题。不用说,您肯定还应该保留一份旧项目的副本,以防万一。:)

在转换大型C++;从VS2005到VS2008的计划? 在将一个大型C++程序从VS2005转换成VS2008? < P>,有什么不同的语法,你不能简单地重新编译吗?VS将自动为您转换.sln和vcproj文件。剩下的只是代码,除非你做了一些奇怪的事情,否则它应该只是按原样重新编译。< P>在我的工作中,我们把一个大型的C++项目从VS2005转换成了VS2008。根本没有问题。不用说,您肯定还应该保留一份旧项目的副本,以防万一。:),c++,visual-studio,visual-c++,C++,Visual Studio,Visual C++,编辑:我应该提到,该项目是独立于平台的,没有gui组件。我最近将一个使用VC++5编写的项目转换为VS2008,我已经10年没有接触过它了。我刚刚加载了项目,并让VS2008将其转换。一切都很顺利。(project now here:)如果您的项目使用的是MFC,那么您应该知道它在2008年有一个相当重要的更新,这可能会破坏一切。主要是安全和用户界面更新,所以我认为无论如何都值得做 有关VS 2008中发生的变化的更多一般信息,请参阅。我现在正在解决这个问题 正在运行WinMerge以查看我已更

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

我最近将一个使用VC++5编写的项目转换为VS2008,我已经10年没有接触过它了。我刚刚加载了项目,并让VS2008将其转换。一切都很顺利。(project now here:)

如果您的项目使用的是MFC,那么您应该知道它在2008年有一个相当重要的更新,这可能会破坏一切。主要是安全和用户界面更新,所以我认为无论如何都值得做


有关VS 2008中发生的变化的更多一般信息,请参阅。

我现在正在解决这个问题

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

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

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

某些ATL方法(或方法参数)已更改为最初没有更改的常量(将我的重写搞砸了)

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

STDMETHOD现在包括uu declspec(nothrow),这是100%正确的-除了在我们的代码中发现一些问题。有些接口编写得像是通过COM公开的,但从未公开过,因此抛出了异常

IDE有一个功能,如果没有设置断点来突出显示整行(我认为这可能是VC++的默认设置),那么禁用的断点就不会显示边距中的空心圆


这些问题大多是由于代码中的细微错误或MFC/ATL库的严重过载造成的。因为其他人的代码都是完美的,所以您应该很好;)

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

如果你必须支持旧平台,请注意:VC2008是第一个支持旧平台的版本。因为这个原因,我的公司不得不坚持使用VC2005。

将VC++重新标记为VisualC++,试图在一个标记上实现标准化…
VS2005
包括Windows SDK 5.0,
VS2008
包括Windows SDK 6.0。请看详细的比较。我的答案是不好的。。。怎样?这和其他一半的答案基本相同。