修復VS2017 LNK1104 無法打開庫文件錯誤之宏錯誤

1.問題描述:

使用Visual Studio 2017創建C++默認工程項目,編譯報錯,提示 LNK1104: 無法打開文件"MSVCRTD.lib"。

img_201922-220728_6.png


2.問題分析:

對比其他電腦程序環境,項目-屬性-屬性頁-VC++目錄:庫目錄,發現系統宏 $(VC_LibraryPath_x86) 有錯誤,部分路徑不存在。錯誤路徑爲:C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\lib\Spectre\x86;... 正確路徑爲:C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\lib\x86; ...  錯誤的路徑中都多了 "Spectre\"。

img_201922-223432_11.png.

3.解決方法:

可以手動添加正確路徑,或修正系統宏 $(VC_LibraryPath_x86)  設置。着重說明如何修正系統宏,經常繁雜搜索後,確定是 C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\VC\VCTargets\Microsoft.Cpp.Common.props 文件有錯誤,定位到行 “<VCLibDirMod Condition="'$(VCLibDirMod)' != 'true' and '$(SpectreMitigation)' == 'Spectre'">Spectre\</VCLibDirMod>” ,刪去"Spectre\"即可。至於爲何會發生如此錯誤,不得而知。

img_201922-224340_15.png

4.本文目的:

每個人遇到的問題大多數都是特定的,不可能盡相同,本文旨在告訴讀者如果遇到此類錯誤或需要自定義VS系統宏時應如何進行,系統下有數百個 .props 屬性設置文件,可使用 Everything、UltraEdit 工具,根據路徑、文件名稱、目標字符串等特徵去搜索。

請注意,大多數宏都是多層嵌套的,甄別時有較大難度,建議修改驗證時做好備份。

5.結果:

宏 $(VC_LibraryPath_x86)  內容修正後,編譯成功。

img_201922-225322_16.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章