C++开发新版本vs使用旧版本vs编译的静态库动态库

关于vs潜在的升级问题概述 (Visual C++)查看官网的介绍:潜在的升级问题概述 (Visual C++)。主要问题:html

1. 若是使用 /GL(全程序优化)进行编译,则生成的对象文件只能使用生成它时所用的同一工具集进行连接。即若在编译静态库时开启了全程序优化,那么编译出的静态库不可移植。windows

2. 在 Visual Studio 2013 及更低版本中,不能保证使用不一样编译器工具集和运行时库版本生成的对象文件 (OBJ)、静态库 (LIB)、动态库 (DLL) 和可执行文件 (EXE) 之间的二进制兼容性。在 Visual Studio 2015 及更高版本中,使用两个版本之一的编译器编译的运行时库和应用程序是二进制兼容的。 这意味着,若是拥有使用 Visual Studio 2015 生成的第三方库,则无需对其进行从新编译便可经过使用 Visual Studio 2017 或 Visual Studio 2019 生成的应用程序使用该库。关于二进制兼容能够查看:Visual Studio 2015 和 Visual Studio 2019 之间的 C++ 二进制兼容性函数

3. 对于vs2013及更早版本编译的静态库,在vs及以后版本中提供了库 legacy_stdio_definitions.lib,该库提供了符号兼容性。可是,对于某些从通用 CRT 删除的符号,则没法提供兼容性符号。 这些符号包括一些函数(例如,__iob_func)和数据导出(例如,__imp___iob、__imp___pctype、__imp___mb_cur_max)。工具

 

参考:windows下C++开发新版本vs使用旧版本vs编译的静态库动态库(项目vs版本升级)http://comonly.cn/l/p/1198.html优化

若是想让C++项目在不一样版本vs下同时开发能够参考https://blog.csdn.net/weixin_42259823/article/details/100164754spa

相关文章
相关标签/搜索