首页 > 解决方案 > Visual C++ 2013 二进制文件是否与 Visual C++ 2017 二进制文件兼容?

问题描述

在我们的 C++ 解决方案之一中,我们使用第三部分库。这些库与 VS 2013 兼容。现在我们正在将我们的解决方案迁移到 VS 2017 并发现一些 3rd 方库没有与 VS 2017 兼容的版本。

所以我们尝试在 VS20173 中使用一些与 VS2013 兼容的库,并且尝试过的 API 调用工作正常。

我可以假设这些库可以与 VS 2017 可执行文件一起使用而没有任何问题吗?

标签: c++visual-studiovisual-studio-2013visual-studio-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


推荐阅读