C++ 是VS2015 SP3 C++;运行时与SP2C兼容++;运行时间?

C++ 是VS2015 SP3 C++;运行时与SP2C兼容++;运行时间?,c++,visual-studio-2015,C++,Visual Studio 2015,我们有不同的团队,安装了不同版本的VS2015。一些安装了2015 SP2,其他安装了VS2015 SP3 我想知道这些服务包提供的C++运行时是否可压缩。即: Li >我可以运行VS2015 SP3 C++执行文件,并使用VS2015 SP2 DLL(通过C++对象)? 我可以运行VS2015 SP2 C++执行文件,并用VS2015 SP3 DLL(通过C++对象)?< /LI> 我找不到任何有关兼容性的信息…没有Visual Studio 2015 Service Pack 2或3。

我们有不同的团队,安装了不同版本的VS2015。一些安装了2015 SP2,其他安装了VS2015 SP3

我想知道这些服务包提供的C++运行时是否可压缩。即:

    <> Li >我可以运行VS2015 SP3 C++执行文件,并使用VS2015 SP2 DLL(通过C++对象)? 我可以运行VS2015 SP2 C++执行文件,并用VS2015 SP3 DLL(通过C++对象)?< /LI>

我找不到任何有关兼容性的信息…

没有Visual Studio 2015 Service Pack 2或3。你可能在说:和

所以我认为你的问题应该翻译成:

VisualStudio 2015更新3对C++标准对象有任何更改吗? 你可以找到一个C++编译器的修改列表:

您的问题特别关注对标准库的更改,如下所示:

  • 当销毁在更新2中回归的琐碎对象范围时,我们恢复了调试模式的性能,如在vector中
  • 我们已经实现了C++17工作文件中的可交换特征,从提案P0185中添加了[nothrow-]可交换特征。作为一个推测性的C++17特性,特性(
    是可交换的
    是可交换的
    是可交换的
    是可交换的
    是可交换的
    )只有在使用/std:C++最新版本编译时才可见,
    std::swap
    上的约束才是活动的
  • 我们已经从vcruntime140.dll和静态库中删除了ETW事件调用,这些调用以前在进程启动和dllmain期间触发
  • 新的,我们删除了STL容器使用的常用机械中的符号名长度,例如
    std::vector
    ,从而降低了C4503警告的可能性。例如,以下类型不再生成警告:
    concurrency::concurrent\u unordered\u map>>

最后一个符号表示符号命名,C++对象内部已更改。这意味着,在一次更新创建的对象中,符号名称不一定与另一次更新预期的符号名称一致。因此,您的问题的答案是:否,对象符号命名在版本之间发生了更改。它们不再保证兼容。


此外,试图找出为什么在一段代码中工作的东西在另一段代码中不起作用,对我来说,这只是对一个小的更新。根据我的经验,我恳求你:让你的整个团队都在完全相同的Visual C++版本上。如果不这样做,将发生以下两种情况之一:

  • 您的团队成员总是怀疑版本差异。如果他们希望工作的话,他们不会觉得需要在另一个版本的Visual C++上尝试。更糟糕的是,如果使用在Visual C++的其他版本中,他们可能需要确保代码得到支持。你将在这里经历一个缓慢而稳定的滴水过程
  • 您的团队成员使用的功能在版本之间发生了变化。但他们并不认为版本变更是罪魁祸首。这个问题将花费大量的时间,因为识别错误将非常困难

  • 总而言之,正确的答案是:让您的整个团队都使用固定版本的Visual Studio,这样您就不会一直在您或他们的头脑中产生那种烦人的担忧。

    为什么您会假设不兼容?service pack提供修复,而不是主要的版本升级。您遇到过任何问题吗?顺便说一句,一旦Windows Update更新应用程序,您的应用程序最终可能会以最新版本运行runtime@PanagiotisKanavos:“你为什么会认为不相容?”-也许是多年的痛苦经历?意外地引入这样的不兼容性是非常容易的。@MartinBonner不是真的-这样的事情(核心组件中意外的突破性变化)非常罕见,以至于它们成为新闻,在几天内就被删除和修复。在发行说明中总是提到突破性的更改。C++运行库是所有C++应用程序的核心组件,“是”是一个非常枯燥的答案,从不张贴。所以你只会听到有人回答“不”。您找不到任何关于兼容性问题的信息,这意味着最准确的答案。如果结果是“否”,那么你可以点击提问按钮。我不确定我是否遵循了你的逻辑。MS已经重命名了实际的STL类型,您希望它能正常工作吗?如果部分代码期望运行时提供AAA,而新的运行时已将其重命名为AA,那么情况就不一样了。@MSalters我误解了最后一点。从你的评论来看,这是有道理的。我已经进行了相应的编辑。谢谢,我在一家大公司工作,我们的选择已设置为SP2(抱歉,更新2;-)。我们有一个大问题:VS studio安装程序。没有简单的方法可以恢复到SP2。完全卸载通常无法正常工作。最大的问题是:即使在安装VS2015 Update2时,安装程序似乎也会在网上检查并找到更新的更新,然后安装Update3@我相信我的回答已经解决了最初的问题。您似乎在问后续问题:“如何安装Visual Studio 2015 Update 2并阻止其安装Update 3?”这可能是一个问题,但我鼓励您接受此答案,然后在以下位置打开该问题: