是visualc++;2013与Visual C兼容的二进制文件++;2017二进制文件? 我们的C++解决方案中,我们使用第三个部分库。这些库与VS 2013兼容。现在,我们正在将解决方案迁移到VS 2017,发现一些第三方库没有与VS 2017兼容的版本

是visualc++;2013与Visual C兼容的二进制文件++;2017二进制文件? 我们的C++解决方案中,我们使用第三个部分库。这些库与VS 2013兼容。现在,我们正在将解决方案迁移到VS 2017,发现一些第三方库没有与VS 2017兼容的版本,c++,visual-studio,visual-studio-2013,visual-studio-2017,C++,Visual Studio,Visual Studio 2013,Visual Studio 2017,因此,我们尝试在VS20173中使用一些与VS2013兼容的库,尝试过的API调用工作正常 我可以假设这些库与VS 2017可执行文件一起工作没有任何问题吗?一般来说-不,AFAIK、VC++2015(又名工具集v140)和VC++2017(又名工具集v141)声明为二进制兼容。VC++2013中没有这样的声明,我相信有一些突破性的变化(比如sizeof(list)等) 它可能会工作,但可能会导致难以调试的问题 Microsoft声明: “一种更为严重的更改,突破性的更改可能会影响二进制兼容性,

因此,我们尝试在VS20173中使用一些与VS2013兼容的库,尝试过的API调用工作正常


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

一般来说-不,AFAIK、VC++2015(又名工具集v140)和VC++2017(又名工具集v141)声明为二进制兼容。VC++2013中没有这样的声明,我相信有一些突破性的变化(比如sizeof(list)等)

它可能会工作,但可能会导致难以调试的问题

Microsoft声明:

“一种更为严重的更改,突破性的更改可能会影响二进制兼容性,但这种二进制兼容性的突破只发生在Visual Studio的主要版本之间。例如,Visual Studio 2013和Visual Studio 2015之间。”


一般而言,请参见第AFAIK、VC++2015(又名工具集v140)和VC++2017(又名工具集v141)声明为二进制兼容。VC++2013中没有这样的声明,我相信有一些突破性的变化(比如sizeof(list)等)

它可能会工作,但可能会导致难以调试的问题

Microsoft声明:

“一种更为严重的更改,突破性的更改可能会影响二进制兼容性,但这种二进制兼容性的突破只发生在Visual Studio的主要版本之间。例如,Visual Studio 2013和Visual Studio 2015之间。”


<>(P/>P>>P>>没有保证,但Visual C++编译器的二进制兼容性一般比官方宣布的要好。只需确保不跨不同的运行时创建/销毁对象,传播异常,不将STL相关对象作为参数传递


如果第三方库公开C风格的接口,并将它们编译为DLL,那么任务就更容易了。因此,您应该检查这些接口,并验证它们与通用互操作性指南的差异有多大

> P>没有保证,但Visual C++编译器的二进制兼容性一般比官方宣布的要好。只需确保不跨不同的运行时创建/销毁对象,传播异常,不将STL相关对象作为参数传递


如果第三方库公开C风格的接口,并将它们编译为DLL,那么任务就更容易了。因此,您应该检查这些接口,并验证它们与通用互操作性指南的差异有多大