【问题标题】:Anything I should know before converting a large C++ program from VS2005 to VS2008?在将大型 C++ 程序从 VS2005 转换为 VS2008 之前我应该​​知道什么?
【发布时间】:2008-10-28 13:49:29
【问题描述】:

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

【问题讨论】:

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


【解决方案1】:

我现在正在解决这个问题。

运行 WinMerge 以查看我所做的更改...

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

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

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

Platform SDK 较新 - 如果您正确设置 Windows SDK 版本#defines,请小心(我们并非在所有地方 - 这很愚蠢)。您现在可能正在使用更新版本 (Vista/2008) 的 Win32 结构进行构建。这在我的 XP 机器上效果不佳。

STDMETHOD 现在包括 100% 正确的 __declspec(nothrow) - 除了这在我们的代码中发现了一些问题。某些编写得好像会通过 COM 公开但从未公开过的接口会引发异常。

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        如果您的项目正在使用 MFC,那么您应该知道它在 2008 年进行了相当大的更新,这可能会破坏一些东西。主要是安全性和 UI 更新,我认为无论如何都值得这样做。

        请参阅here,了解有关 VS 2008 中更改内容的更多一般信息。

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            【解决方案6】:

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

            【讨论】:

              【解决方案7】:

              您不能简单地重新编译的语法有什么不同吗? VS 会自动为你转换 .sln 和 vcproj 文件。剩下的只是代码,除非你在做一些很奇怪的事情,否则它应该按原样重新编译。

              【讨论】:

              • 我的回答是不是很糟糕......怎么样?它与其他答案的一半基本相同。
              猜你喜欢
              • 2018-05-06
              • 2010-12-31
              • 1970-01-01
              • 2023-03-12
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多