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

相關文章
相關標籤/搜索