[英]Cannot open source file "All the cpp header files" and global scope has no "some file name" error
[英]“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.h
或string.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.h
, limits.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.