看了上一篇博客還是在6月13號,一直想著寫一些東西,也準(zhǔn)備了很多內(nèi)容,沒想到一直拖到了現(xiàn)在。今天終于掀開了我的筆記本蓋子,按下了開機(jī)按鈕,雙擊瀏覽器圖標(biāo)打開了博客頁(瀏覽器圖標(biāo)都差點(diǎn)找不到了~~),趕緊寫完一篇睡覺,明晚還要給我的小可愛做飯呢。。。
言歸正傳,下面就簡單描述一下關(guān)于不同版本VS編譯獲得的靜態(tài)庫、動(dòng)態(tài)庫的兼容性問題,以下是參考msdn的描述:
Visual Studio 2013 和更早版本中的 Microsoft c + + (MSVC) 編譯器工具集不保證主要版本之間的二進(jìn)制兼容性。 不能鏈接對象文件、靜態(tài)庫、動(dòng)態(tài)庫以及由這些工具集的不同版本生成的可執(zhí)行文件。 Abi、對象格式和運(yùn)行庫是不兼容的。
我們在 Visual Studio 2015、2017和2019中更改了此行為。 任何這些版本的編譯器編譯的運(yùn)行時(shí)庫和應(yīng)用都是二進(jìn)制兼容的。 它反映在 c + + 工具集的主編號(從14開始,適用于所有三個(gè)版本)。 (工具集版本適用于 Visual Studio 2015、v141 2017 和 2019) 的 v142。 假設(shè)你有 Visual Studio 2015 生成的第三方庫。 你仍可以在 Visual Studio 2017 或2019生成的應(yīng)用程序中使用它們。 無需使用匹配的工具集進(jìn)行重新編譯。 最新版本的 Microsoft Visual C++ 可再發(fā)行組件包 (可再發(fā)行組件) 適用于所有這些包。
二進(jìn)制兼容性的限制
對于 v140、v141 和 v142 工具集和次要編號版本更新之間的二進(jìn)制兼容性,有三個(gè)重要的限制:
- 可以混合使用不同版本的 v140、v141 和 v142 工具集生成的二進(jìn)制文件。 但是,必須使用最新的工具集至少與應(yīng)用中的最新二進(jìn)制鏈接。 下面是一個(gè)示例:可以將使用任何2017工具集 (v141,版本15.0 到 15.9) 的應(yīng)用鏈接到使用版本16.2 或更高版本的工具集進(jìn)行編譯的靜態(tài)庫,如 Visual Studio 2019 版本 16.2 (v142) 。 只要你使用的是16.4 或更高版本的工具集,你就可以將版本16.2 庫鏈接到16.4 版應(yīng)用。
- 應(yīng)用使用的可再發(fā)行組件具有類似的二進(jìn)制兼容性限制。 當(dāng)混合使用不同的受支持版本的工具集生成的二進(jìn)制文件時(shí),可再發(fā)行版本必須至少與任何應(yīng)用組件所用的最新工具集相同。
- 使用 /GL (完全程序優(yōu)化)編譯器開關(guān)或使用 /LTCG (鏈接時(shí)代碼生成 進(jìn)行鏈接的靜態(tài)庫或?qū)ο笪募? 在不同版本之間 不 兼容二進(jìn)制,包括次要版本更新。 使用和編譯的所有對象文件和庫 /GL /LTCG 必須使用完全相同的用于編譯和最終鏈接的工具集。 例如, /GL 在 Visual Studio 2019 版本16.7 工具集中使用生成的代碼無法鏈接到 /GL 在 Visual Studio 2019 版本16.8 工具集中使用生成的代碼。 編譯器發(fā)出錯(cuò)誤 C1047。
將 Microsoft Visual C++ 可再發(fā)行組件從 Visual Studio 2015 或2017升級到 Visual Studio 2019
我們?yōu)?Visual Studio 2015、2017和2019保留了 Microsoft Visual C++ 的可再發(fā)行組件主版本號。 這意味著一次只能安裝一個(gè)可再發(fā)行的實(shí)例。 較新的版本將覆蓋已安裝的任何較舊版本。 例如,一個(gè)應(yīng)用可以安裝 Visual Studio 2015 中的可再發(fā)行組件。 然后,另一個(gè)應(yīng)用會安裝 Visual Studio 2019 的可再發(fā)行組件。 2019版本覆蓋了較舊的版本,但由于它們是二進(jìn)制兼容的,所以前面的應(yīng)用程序仍能正常工作。 我們確保最新版本的可再發(fā)行組件包含所有最新功能、安全更新和 bug 修復(fù)。 這就是我們始終建議升級到最新可用版本的原因。
同樣,如果已安裝較新版本,則無法安裝較舊的可再發(fā)行組件。 如果嘗試,安裝程序?qū)?bào)告錯(cuò)誤。 如果在已有2019版本的計(jì)算機(jī)上安裝2015或2017可再發(fā)行組件,會看到類似于下面的錯(cuò)誤:
0x80070666 - Another version of this product is already installed. Installation of this version cannot continue. To configure or remove the existing version of this product, use Add/Remove Programs on the Control Panel.文章來源:http://www.zghlxwxcb.cn/news/detail-453578.html
此錯(cuò)誤是由設(shè)計(jì)決定的。 建議保留最新版本。 請確保安裝程序可在不提示的情況下從此錯(cuò)誤恢復(fù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-453578.html
到了這里,關(guān)于關(guān)于不同版本VS編譯獲得的靜態(tài)庫、動(dòng)態(tài)庫的兼容性的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!