另一位开发人员和我在不同机器上使用Microsoft Visual Studio 2008版本9.0.30729.1 SP构建的本机C ++可执行文件中遇到不同的行为。
我们静态链接到标准库,因此我们认为这不是DLL版本问题。我们已经排除了源代码和构建设置的差异。
我们推测可能在我们的单独机器上安装了不同的“修补程序”,这些“修补程序”会影响代码生成,或者可能在C ++标准库实现方面存在差异。
我们每个人都使用[帮助|关于Microsoft Visual Studio |复制信息]以获取版本信息,然后将它们区分开来。果然,我们发现了一些差异。我有一些我的同事没有的修补程序。他的装置中有一对丢失了。
以下是版本信息中的示例修补程序条目:
Microsoft Visual Studio 2008专业版的修补程序 - ENU(KB953256)KB953256 此修补程序适用于Microsoft Visual Studio 2008专业版 - ENU。 如果以后安装更新的Service Pack,将自动卸载此修补程序。 有关详情,请访问http://support.microsoft.com/kb/953256。
正如您将注意到的,提供的链接已经死亡。事实上,在我们发现的四个差异中,除了一个之外的所有差异都有死链接:
有没有人知道如何真正找到有关这些神秘修补程序的更多信息?有关这些特别的建议吗?如果没有完全重新安装Visual Studio,那么有没有人可以通过删除和/或重新安装修补程序获得有关如何使我们的单独安装同步的提示?
答案 0 :(得分:2)
在本机C ++应用程序中导致不同行为的主要原因可能是: KB958357
这似乎是现在KB962219的早期版本。有关详细信息,请参阅Visual C ++团队博客上的此帖子: http://blogs.msdn.com/vcblog/archive/2008/12/17/vc9-sp1-hotfix-for-the-vector-function-ft-crash.aspx
此修补程序实际修复了5个错误:
function :: swap()被VC9中的小Functor Optimization破坏了 TR1(功能包)。这打破了 矢量>在VC9 SP1中。 “破碎”意味着“编译但是 崩溃”。
矢量>不合格地要求X有一个 默认构造函数。 (这是一个 一般bug的具体例子: 矢量>中 矢量>>等 也受到了影响。)
矢量>不符合要求的X和Y要求 有默认的构造函数。 (这是一个 一般bug的具体例子,见 的上方。)
矢量>不合格地要求X具有默认值 构造
- 醇>
随机分布被打破,触发无限循环并发出 假结果。
这些看似足够的更改会导致不同的行为,但这一切都取决于您的代码。查看是否在每台计算机上安装该修补程序的最新版本可以解决您看到的差异。
答案 1 :(得分:1)
我不确定这是多少帮助,但这里有各种修补程序的信息
根据服务包详细信息,它看起来可能是机器之间的差异