IntelliSense 无法打开源文件

Jul*_*sch 6 c++ intellisense visual-studio visual-c++ visual-studio-2017

我开始在我的大学担任研究员,并被指示使用内部框架为已经存在的用 C++ 编写的应用程序开发一个组件,该框架也是用 C++ 开发的。

目前,我正在努力在 Visual Studio 2017 中正确设置项目。每当我尝试包含框架中的文件时,IntelliSense 都会抱怨无法打开该文件。

然而,以下事情增加了问题的奇怪之处:

  • 解决方案属性设置正确;该项目确实建立起来没有任何抱怨。

  • 编写“#include”指令时,IntelliSense确实会建议头文件的正确相对路径(即#include <framework/class.h>)。

  • 我可以使用“打开文档”class.h”对话框从引用它的源文件中打开头文件。

我已经遇到过这个:

到目前为止,没有什么能解决我的问题。有人遇到过这个问题吗?

TL; 博士

  • 一切都编译得很好。
  • “C/C++ -> General -> Additional Include Directories”设置正确。
  • “VC++ 目录 -> 包含目录”也已设置。
  • 编写包含指令时,IntelliSense 会正确建议头文件。
  • 据报道,IntelliSense 无法打开该文件,因此未对其进行索引。
  • 我被一个花哨但资源匮乏的文本编辑器困住了。

编辑:

我正在使用 MacBook“13 2016;通过 Bootcamp 安装了 Windows 10 Pro 64 位。

yot*_*oth 5

出现此问题是因为 Windows 现在可以选择使文件夹区分大小写,并且智能感知习惯于更改它尝试打开的文件的大小写。

Intellisense 尝试使用像 C:\WORKSPACEPATH\PROJECTDIR\MYFILE.cpp 这样的路径(即全部大写),但如果 C:\workspace(或路径中的任何其他目录)设置为区分大小写并且不t 完全匹配,它不会被找到。

就我而言,这是因为我通过 WSL 创建了该文件夹,该文件夹默认情况下在它创建的任何新目录上启用区分大小写(包括通过诸如 之类的东西git clone)。看这里

轻松修复

这可以通过运行以下命令来修复:

fsutil file setCaseSensitiveInfo <directory> disable
Run Code Online (Sandbox Code Playgroud)

更多命令

您可以通过运行来检查文件夹是否启用了区分大小写

fsutil file queryCaseSensitiveInfo <directory>
Run Code Online (Sandbox Code Playgroud)

最后,一个方便的单行代码可以递归地禁用它:

for /r /d %f in (.) do (fsutil file setCaseSensitiveInfo %f disable)
Run Code Online (Sandbox Code Playgroud)

(此信息最初是作为对原始问题的评论发布的,后来发现它实际上是同一个问题。请参阅其他人的评论以获取输入)