visualstudio-在将大型C++程序从VS2005转换为VS2008之前,我应该知道的任何事情
visual studio - Anything I should know before converting a large C++ program from VS2005 to VS2008?
在将大型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文件。剩下的只是代码,除非你正在做一些非常奇怪的事情,否则它应该按原样重新编译。
- 我应该使用什么来代替void作为变体中的替代类型之一
- boost::asio::steady_timer()与sleep()我应该使用哪一个
- 我应该实现右值推送功能吗?我应该使用std::move吗
- 我是C++编程的新手,这些代码之间有什么区别,我应该使用哪一个
- 我应该删除矢量<short>吗?
- 我应该如何修改此代码以使用给定字符串中的字母打印菱形图案
- 我应该在锁定TBitmap画布后解锁它吗
- 在批准 C++20 之前,我应该如何使用自纪元以来的天数值?
- 为什么我应该在unordered_map参数之前添加'&'?
- 如果我想在循环之前使用 openmp 关键,我应该使用大括号吗?
- 在使用CPP中使用STD :: MAP之前,我应该致电清晰
- 我应该在dlopen之前锁定
- 为什么我应该在关闭套接字之前使用shutdown()
- 在更改Gtk::Entry的文本之前,我应该捕捉什么信号来获取它
- 我应该在使用它之前检查 boost::shared_ptr 还是 std::shared_ptr
- 在我进一步学习Python之前,我应该学习C++吗
- 我应该在使用dlopen()之前执行malloc()吗?
- 我应该在捕获异常之前就知道它的类型吗?
- 我应该在知道我将使用多少个元素之前还是之后定义向量中的元素数?
- visualstudio-在将大型C++程序从VS2005转换为VS2008之前,我应该知道的任何事情