我有一位客户仍在使用 Visual Studio 6 构建生产系统。他们编写使用 STL 并在多处理器机器上运行的多线程系统。

有时,当他们更改其中一台服务器的规格或增加其负载时,他们会遇到“奇怪的”难以重现的错误......

我知道 Visual Studio 6 开发存在几个问题,我想说服他们转向 Visual Stuio 2005 或 2008(他们有 Visual Studio 2005 并将其用于某些项目)。

此问题的目的是将已知问题或升级原因的列表以及讨论或报告这些问题的链接放在一起。了解这些问题如何困扰您的现实生活中的“恐怖故事”也会很有用。

有帮助吗?

解决方案

64位系统不支持Vista兼容性问题,并且已于2008年4月8日退出Microsoft的扩展支持

http://msdn.microsoft.com/en-us/vbrun /ms788708.aspx

其他提示

未修补的VC6 STL不是线程安全的。请参见 http://www.amanjit-gill.de/articles/vc6_stl.html ,这些补丁不包含在服务包中必须直接从Dinkumware获取它们(从这里 http://www.dinkumware.com/vc_fixes.html )然后将它们应用于每个安装......

我们在我的工作场所看到的最大问题是它无法处理稍微复杂的模板化类或函数。仅这一事实就迫使公司中一些最忠实的 VS6 粉丝升级并开始使用 VS2005。除了模板问题之外,智能感知要好得多,调试更容易、更准确,而且许多人发现 IDE 更易于导航。到目前为止,我们看到的唯一缺点是 2005 年的构建时间比 6 中的构建时间要长一些(但这可能是编译器更加强大的副作用)

您还可以查看这些站点以获取 VS6 中已知问题的示例:

我相信如果你多看看,你会发现更多。

VS6 不根据当前的 C/C++ 标准编译代码。例如,

  • 它的循环作用域规则不正确(过时)。现在至少有一个 MSFT SDK 已使用需要正确语义的代码进行了更新,因此该 SDK 甚至不再使用 VS6 进行编译。
  • 它很难编译除了最简单的模板构造之外的所有模板构造。
  • 它将编译一些在最近的标准更新中被声明为非法的模板构造(因为这些构造实际上并不执行普通用户期望的操作)。

operator new不符合C ++规范,并且不会在分配失败时抛出异常,修复此操作并非易事。

请参阅: http://msdn.microsoft.com/en-us/magazine/cc164087.aspx

我升级的最大原因之一是符合标准的C ++编译器(虽然仍然不是100%),所以我可以在我的项目中利用更多C ++功能,而不用担心会导致难以实现的奇怪的黑客攻击和变通方法。发现错误。

与Vista不兼容。哎呀,VS 2005与Vista有很多问题。

话虽如此,VS中的大多数改进似乎都适用于除C ++本机代码之外的所有内容。我所看到的是更符合标准,这很重要但很难引人注目。

Visual Studio 6与已发布的Windows SDK不兼容,因此无法(至少很容易)使用最新的操作系统功能。

虽然我不再具有具体的细节,但我只是在工作时升级时,新的编译器发现了很多VC 6让它悄悄溜走的错误。从升级开始就提高了产品的稳健性。

如果他们使用STL,他们可能会对最近发布的功能包,其中包含 TR1 <的实现/ A>

STL的VS 2008版本使用 / clr 编译,因此如果他们对转换到托管世界感兴趣,他们就不必丢失所有旧代码。

通过defoult更新的版本有更好的编译器和更好的库。但是将现有项目移植到新工作室并不总是那么容易,您可以手动升级编译器和库。

我在一年前使用VS 6.0和英特尔编译器。我们当时只有一堆旧代码,它将迭代器作为指针进行威胁,反之亦然,而且它们都非常混乱和可怕,所以这使我们无法升级。

但我毕竟不得不升级,因为我目前使用的框架根本不能在VS 6.0上运行。认为这是最终的原因: - )

第三方库也仅支持有限数量的编译器。您的客户可能无法接受错误修正或功能升级。

例如,即使是作为Boost广泛使用的库也只支持VS 7.1及更高版本(

你也可能在数据执行保护(DEP)方面遇到一些问题,因为VC6附带了旧的ATL版本。像往常一样,请参阅 Raymond Chen 了解详情。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top