在我们的一个C ++解决方案中,我们使用第三方库。这些库与VS 2013兼容。现在我们将我们的解决方案迁移到VS 2017,发现某些第三方库没有VS 2017兼容版本。
因此我们尝试在VS20173中使用一些VS2013兼容库,并且尝试过的API调用工作正常。
我可以假设这些库可以在没有任何问题的情况下使用VS 2017可执行文件吗?
答案 0 :(得分:4)
总的来说 - 没有。 AFAIK,VC ++ 2015(又名工具集v140)和VC ++ 2017(又名工具集v141)被认为是二进制兼容的。 VC ++ 2013没有做出这样的陈述,我相信有一些重大变化(比如sizeof(list)等)。
它可能会起作用,但可能导致难以调试的问题
微软声明:
“更严重的更改,突破性更改会影响二进制兼容性,但这些类型的二进制兼容性断开仅发生在Visual Studio的主要版本之间。例如,在Visual Studio 2013和Visual Studio 2015之间。” / p>
请参阅https://docs.microsoft.com/en-us/cpp/porting/visual-cpp-change-history-2003-2015
答案 1 :(得分:0)
没有任何保证,但Visual C ++编译器的二进制兼容性通常比官方宣布的要好。只是确保不要跨不同的运行时创建/销毁对象,传播异常并且不要将STL相关对象作为参数传递。
如果第三方库公开C样式接口并将它们编译为DLL,则任务更加容易。因此,您应该检查这些接口并验证它们与一般互操作性指南的差异程度。