将VC++ 6/Win32项目转换为VS2010 C++/Win32项目:已知问题

Max*_*dov 10 c++ migration winapi mfc visual-studio-2010

您是否知道在将VC++ 6/Win32项目转换为VS2010 C++/Win32项目类型期间突出显示已知或可能的问题的任何资源?我对各种问题感兴趣:

  • 编译器选项兼容性
  • 编译时问题
  • 链接时间问题
  • 运行时问题
  • MFC问题

否则,如果您已经执行了那种迁移,那么您遇到了哪些问题?

谢谢

小智 5

VC++ 6具有非标准的异常处理.我们遇到了一些问题,因为我们的代码包含:

try { 
  //Some code
} 
catch (...) {
  //Handle error
}
Run Code Online (Sandbox Code Playgroud)

一些开发人员依赖于这种破坏的行为,并且我们的应用程序在VS2008中编译后严重崩溃.

文章解释了它好,如何解决这个问题.


rub*_*nvb 4

  1. 首先,这些问题高度依赖于代码质量以及如何修改古老的代码以适应VC++6编译器的“功能”。

  2. 无法.dsp直接转换为 VS 2010 格式(至少对于 Express 版本),您必须通过 2008 才能转换。

  3. 转换向导应该警告并通知您可能存在的任何问题。我还没有经历过这个过程,但我认为编译器切换是你最不用担心的。一般来说,我希望糟糕的代码会产生更多你需要担心的错误。

至于您的具体询问:

  • 参见 3。
  • VS2010需要更长的时间。
  • VS2010 链接器将花费更长的时间,特别是如果您启用链接时间优化(在 VS 2005 中引入)
  • 仅当您做出非标准假设或 VC++6 有非标准函数时。只要您使用 VS2010 重新编译完整的项目(从而将其链接到最新的 VC(++) 运行时),就不会出现运行时问题。

旁注:我并不是说旧代码不好,只是说关于 VC++6 的很多问题都是由糟糕的代码质量/一致性引起的。