安装的SDK的头文件的“无法打开源文件”

时间:2019-02-11 12:10:22

标签: c++ visual-studio header-files

我正在尝试继续从事其他人开始的C ++项目。要打开该项目,我必须安装C / C ++工作负载。我做到了,并且已经重新启动了PC。

该项目最初针对的是不同于Windows XP版本的Windows SDK。这导致Visual Studio IntelliSense告诉我“ {open source file”(无法打开源文件)用于SDK头文件,例如stdio.hstring.h

我转到了项目设置> VC ++目录>包括目录>编辑,然后看到变量扩展到错误的路径。因此,我继续retarget the project到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,我可以在该目录中找到它们。

我注意到,当我键入#include <并让IntelliSense建议包括时,它也不会建议来自任何C:\Program Files (x86)\Windows Kits\10\子目录的那些。但是,这些头文件 列在“外部依赖项”项目节点中。

StackOverflow充满了有关此错误的问题,但通常是有关第三方lib或项目文件的问题,答案建议检查“包含目录”。我这样做了,如果我可以相信扩展后的值,它们似乎是完整的,但是显然还是有问题的。

我基本上是C ++和所有“头魔术”的新手,因此它可能与项目有关。我发现该项目包含一些“ stdafx.h”文件(正如我对预编译头文件的阅读),但是项目设置说使用预编译头文件,实际上我看不到任何{{1 }}文件。

1 个答案:

答案 0 :(得分:0)

Ted Lyngmo's comment的鼓励,我开始编辑其中一个导入文件,尽管所有内容均未更改,但突然所有错误消失并且问题得以解决。

我之前已经做过,但后来并没有帮助,所以不幸的是,我不知道为什么第二次有所帮助。尽管还不尽如人意-似乎这是一个缓存问题,毕竟在清理和重建后甚至仍然存在。

也许不同之处在于我第二次编辑是在解决方案的清理和重建之后,但是我不能保证。

我对这个结果并不满意,因为我想了解什么有所帮助以及为什么,但是最终这解决了问题。因此,看来您必须重新定位,然后清理,然后重新构建,也许重新启动VS,然后编辑一些导入内容以强制使任何缓存无效。

P.S .:同时,请同时参加StackOverflow。显然,这很有帮助。因此,我将其标记为社区答案。