VS2015 SP3 C++运行时是否与SP2 C++运行时兼容
Is VS2015 SP3 C++ runtime compatible with the SP2 C++ runtime?
我们有不同的团队,安装了不同版本的VS2015。有些安装了2015 SP2,另一些安装了VS2015 SP3。
我想知道这些服务包提供的C++运行时是否兼容。即:
- 我可以使用VS2015 SP2 dll(传递C++对象)运行VS2015 SP3 C++可执行文件吗
- 反之亦然:我可以使用VS2015 SP3 dll(传递C++对象)运行VS2015 SP2 C++可执行文件吗
我找不到任何有关兼容性的信息。。。
没有Visual Studio 2015 Service Pack 2或3。您可能在谈论:Visual Studio 2015 Update 2和Visual Studio 2015 Update3。
所以我认为你的问题应该翻译一下:
Visual Studio 2015 Update 3是否对C++标准对象进行了任何更改
您可以在此处找到对C++编译器所做更改的列表:https://www.visualstudio.com/en-us/news/releasenotes/vs2015-update3-vs#visualcpp
您的问题特别关注标准库的更改,这些更改在这里列出:
- 我们已经恢复了在破坏Update2中回归的琐碎对象范围时的调试模式性能,比如在vector中
- 我们已经实现了C++17工作文件中的可交换特性,来自提案P0185添加[nothrow-]可交换特性。作为一个推测性的C++17特性,当使用/std:C++latest进行编译时,特征(
is_swappable
、is_swappable_with
、is_nothrow_swappable
和is_nothrow_swappable_with
)仅可见,并且对std::swap
的约束仅处于活动状态- 我们已经删除了vcruntime140.dll中的ETW事件调用,以及以前在进程启动和dllmain期间激发的静态库
- 新增我们删除了STL容器使用的常见机制(如
std::vector
)中的符号名称长度,降低了C4503警告的可能性。例如,以下类型不再生成警告:concurrency::concurrent_unordered_map<>>>>
最后一个项目符号表示C++对象内部的符号命名已更改。这意味着,在一个更新创建的对象中,符号名称不一定与另一个更新所期望的符号名称一致。因此,您的问题的答案是:否,对象符号命名在不同版本之间发生了变化。它们不再保证是兼容的
此外,我确实浪费了大量时间试图弄清楚为什么在代码的一部分中有效的东西在另一部分中无效,对我来说,这只是对小更新所做的。根据我的经验,我恳请您:让您的整个团队使用完全相同的Visual C++版本。如果你不这样做,2件事中的1件会发生:
- 您的团队成员总是对版本差异持怀疑态度。如果他们期望的东西不起作用,他们会觉得有必要在Visual C++的另一个版本上尝试。更糟糕的是,他们可能觉得有必要确保他们的代码在其他版本的Visual C++中使用时得到支持。你会在这里经历一段缓慢而稳定的时间
- 您的团队成员将使用在不同版本之间进行更改的功能。但他们没有意识到版本更改是罪魁祸首。这个问题将花费大量的时间,因为识别错误将非常困难
总结一下,正确的答案是:让您的整个团队使用固定版本的Visual Studio,这样您或他们就不会一直担心
相关文章:
- CMake-按正确顺序将项目与C运行时对象文件链接
- 我在c++代码中生成了一个运行时#3异常
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 删除指向指针的指针是运行时错误吗
- 如何用参数值调用函数(仅在运行时已知)
- 为什么即使使用-cudart-static进行编译,库用户仍然需要链接到cuda运行时
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- c++中的指针和运行时错误
- 在运行时处理类型擦除的数据-如何不重新发明轮子
- 有没有一种方法可以测量c++程序的运行时内存使用情况
- 建议在运行时将带有类实例的列表从c++导入qml
- 无法理解此 return 语句的功能,没有它就会发生运行时错误
- 如何在GTK程序运行时禁用屏幕保护程序/电源管理/屏幕消隐
- 在同一模拟中使用静脉和静脉_ inet内容时出现运行时错误
- 读取文件时运行时的未知行为
- 函数在Windows或Linux上运行时表现不同
- 在声明中合并两个常量"std::set"(不是在运行时)
- AWS Lambda C++运行时权限被拒绝
- 通过switch和static_cast访问多态对象的运行时类型
- 如何修复 Onnx运行时会话>运行问题?