簡體   English   中英

安裝的SDK的頭文件“無法打開源文件”

[英]“Cannot open source file” for header files of installed SDK

我試圖繼續從事其他人開始的C ++項目。 要打開該項目,我必須安裝C / C ++工作負載。 我這樣做了,並且已經重新啟動了PC。

該項目最初針對的是與Windows PC上安裝的Windows SDK版本不同的Windows SDK版本。 這導致Visual Studio IntelliSense告訴我SDK頭文件(例如stdio.hstring.h “無法打開源文件”。

我去了項目設置> VC ++目錄>包括目錄>編輯,然后看到變量擴展到錯誤的路徑。 因此,我繼續將項目重新定位到PC上當前安裝的Windows SDK版本(10.0.17763.0)。

現在,如果我檢查“包括目錄”,則會看到選中了“從父級或項目默認值繼承”,則繼承的值為

$(VC_IncludePath)
$(WindowsSDK_IncludePath)

並擴展到

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\include
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Tools\MSVC\14.16.27023\atlmfc\include
C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\VC\Auxiliary\VS\include
C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\ucrt
C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\um
C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\shared
C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\winrt
C:\Program Files (x86)\Windows Kits\10\Include\10.0.17763.0\cppwinrt
C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\Include\um

我檢查了所有這些目錄的確存在於我的機器上。

但是,VS一直告訴我,即使清理並重建了整個解決方案,它也無法打開源文件。 該項目似乎可以編譯,但是代碼卻雜亂無章。

我的包括:

#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <float.h>
#include <string.h>
#include <stdarg.h>
#include <limits.h>
#include <locale.h>
#include "svm.h"

stdarg.hlimits.h (均來自C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Professional\\VC\\Tools\\MSVC\\14.16.27023\\include\\ )和svm.h (在項目中) 。 其他所有包含此錯誤; 它們都來自目錄C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.17763.0\\ucrt\u003c/code> ,我可以在該目錄中找到所有它們。

我注意到,當我鍵入#include <並讓IntelliSense建議包含時,它也不會建議來自任何C:\\Program Files (x86)\\Windows Kits\\10\\子目錄的文件。 但是,這些頭文件在“外部依賴項”項目節點列出。

StackOverflow充滿了有關此錯誤的問題,但通常是有關第三方庫或項目文件的問題,答案建議檢查“包含目錄”。 我這樣做了,如果我可以相信擴展的價值,它們似乎是完整的,但顯然還是有問題的。

我基本上對C ++和所有“頭魔術”都是陌生的,因此它可能與項目有關。 我發現,該項目包含了一些“stdafx.h中”文件(這是因為我讀預編譯頭),但項目設置說, 使用預編譯頭,確實我看不到任何*.pch文件要么。

受到Ted Lyngmo的評論的鼓舞,我開始編輯其中一個導入文件,盡管所有內容都沒有改變,但是突然所有錯誤消失並且問題得以解決。

我之前已經做過,但后來並沒有幫助,所以不幸的是,我不知道為什么第二次有所幫助。 盡管不盡如人意-似乎這是一個緩存問題,畢竟在清理和重建后甚至仍然存在。

也許不同之處在於我第二次編輯是在解決方案的清理和重建之后,但是我不能保證。

我對這個結果並不滿意,因為我很想了解什么有所幫助以及為什么,但是最終這解決了問題。 因此,看來您必須重新定向,然后清理,然后重新構建,也許重新啟動VS並編輯一些導入以強制使要使哪個緩存無效的操作。

PS:此外,與此同時,請參加StackOverflow。 顯然,這很有幫助。 因此,我將其標記為社區答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM