1. 程式人生 > >VS2017 編譯 kbengine找不到stdio.h

VS2017 編譯 kbengine找不到stdio.h

下載的工程(kbengine),用vs2017開啟編譯不過,提示找不到檔案
這裡寫圖片描述
此問題首先肯定是路徑沒有包含。開啟工程屬性檢視VC++目錄。
這裡寫圖片描述

最後發現本機沒有目錄D:\Windows Kits\10\Include\10.0.10240.0\ucrt。 發現stdio等檔案正好在這個目錄下。查看了本機的目錄發現D:\Windows Kits\10\Include 目錄下只有版本為10.0.17134.0的目錄。

這裡寫圖片描述
問題原因應該是這樣。

解決方案:
方法一:
修改工程的配置屬性把vc++目錄都新增上。

方法二:
修改預設的屬性表,切換到屬性管理器中。開啟工程的屬性表。統一修改包含目錄,把需要的目錄新增進去。

這裡寫圖片描述

上面兩種方法我並沒有採用,按道理可以解決,方法一每個工程要改覺得好麻煩。本人又太懶,不想動。
方法二可以很快把所有工程都解決。這個可以。

**方法三
找到Microsoft.Cpp.Common.props。修改裡面的 \Windows Kits\10\Include下的目錄的版本,為你本機的版本。此方法本人發現修改。修改前慎重,把原來檔案備份一下。Microsoft.Cpp.Common.props檔案在D:\Soft\VS2017_C\Common7\IDE\VC\VCTargets目錄下。

以下是我發現的過程,可以給大家一個解決問題的參考
我沒有采納方法一和二。我就想找在那裡出現了這個D:\Windows Kits\10\Include\10.0.10240.0\ucrt。包含目錄只有這兩個

(VCIncludePath);(WindowsSDK_IncludePath);。經過展開,發現是巨集(VCIncludePath);(VC_IncludePath);這個在哪裡定義了,大致百度了了一下,沒有找到自己想要的結果。我就開始自己去摸索。我首先搜尋了我安裝vs2017 社群版的目錄。搜尋VC_IncludePath。
這裡寫圖片描述
於是我打開了Microsoft.Cpp.Common.props這個檔案,具體的我是沒看太懂,大致應該是有初始化這個變數的地方。但是搜尋半天也沒有看到有D:\Windows Kits\10\Include\10.0.10240.0\ucrt等資訊。看了半天左後才發現有一個10.0.10240.0。
這裡寫圖片描述

我就覺得應該是改這個地方,我就把原來檔案備份一份,把此處的10.0.10240.0 改成我電腦裡只有的一個資料夾名字10.0.17134.0。
然後重新啟動了一下工程,開啟VC++目錄檢視包含目錄發現目錄展開後截圖如下:
這裡寫圖片描述

發現變回來了。再次編譯,發現不再提示。問題解決。

所以我的解決方案是:
找到Microsoft.Cpp.Common.props。修改裡面的 **\Windows Kits\10\Include下的目錄的版本,為你本機的版本。

問題原因不一樣,可能解決的方法不一樣,我把自己的發現所得分享出來給大家一個思路。