c++ - Visual C++ 2013 二进制文件是否与 Visual C++ 2017 二进制文件兼容?
问题描述
在我们的 C++ 解决方案之一中,我们使用第三部分库。这些库与 VS 2013 兼容。现在我们正在将我们的解决方案迁移到 VS 2017 并发现一些 3rd 方库没有与 VS 2017 兼容的版本。
所以我们尝试在 VS20173 中使用一些与 VS2013 兼容的库,并且尝试过的 API 调用工作正常。
我可以假设这些库可以与 VS 2017 可执行文件一起使用而没有任何问题吗?
解决方案
一般来说 - 没有。AFAIK、VC++2015(又名工具集 v140)和 VC++2017(又名工具集 v141)被声明为二进制兼容。在 VC++2013 中没有做出这样的声明,我相信存在重大变化(如 sizeof(list) 等)。
它可能有效,但可能导致难以调试的问题
微软声明:
“一种更严重的变化,破坏性的变化会影响二进制兼容性,但这种二进制兼容性中断只发生在 Visual Studio 的主要版本之间。例如,在 Visual Studio 2013 和 Visual Studio 2015 之间。”
请参阅https://docs.microsoft.com/en-us/cpp/porting/visual-cpp-change-history-2003-2015
推荐阅读
- python - 深绑定与浅绑定
- reactjs - 如何使用 react-day-picker 发布正确的工作日
- javascript - 如何根据项目数、每页项目数和页码获取正确的项目?
- google-sheets - 每天都有订单的最佳方式
- javascript - 我可以在 for 循环中滚动回元素的顶部吗?
- python - 从类的 __init__ 方法修改或定义全局变量而不使用 global 关键字
- python - 使用 matplotlib 矩形的面积和轮廓
- c - 选择你自己的冒险
- javascript - 在 React 中精确到组件的多路径
- bash - 将 grep 与 patternfile 一起使用会返回不在 patternfile 中的模式(序列名称)