我开始在我的大学担任研究员,并被指示使用内部框架为一个已经存在的用 C++ 编写的应用程序开发一个组件,该应用程序也是用 C++ 开发的。
目前我正在努力在 Visual Studio 2017 中正确设置项目。 每当我尝试从框架中包含文件时,IntelliSense 都会提示无法打开该文件。
但是,以下事情增加了问题的奇怪程度:
解决方案属性设置正确;该项目确实构建,没有任何投诉。
编写“#include”指令时,IntelliSense 确实建议头文件的正确相对路径(即
#include <framework/class.h>
)。我可以使用“打开文档“class.h””对话框从引用它的源文件中打开头文件。
我已经遇到过这个:
到目前为止,没有解决我的问题。有人遇到过这个问题吗?
长话短说
- 编译一切正常。
- “C/C++ -> General -> Additional Include Directories”设置正确。
- “VC++ 目录 -> 包含目录”也已设置。
- 在编写 include 指令时,IntelliSense 会正确建议头文件。
- 但是 据报道,IntelliSense 无法打开该文件,因此无法对其编制索引。
- 我受困于花哨但资源匮乏的文本编辑器。
编辑:
我正在使用 MacBook“13 2016;通过 Bootcamp 安装了 Windows 10 Pro 64 位。
最佳答案
出现此问题是因为 Windows 现在可以选择使文件夹区分大小写,而 intellisense 习惯于更改它尝试打开的文件的大小写。
Intellisense 尝试使用类似 C:\WORKSPACEPATH\PROJECTDIR\MYFILE.cpp 的路径(即全部大写),但如果 C:\workspace(或路径中的任何其他目录)设置为区分大小写并且不完全匹配,将找不到。
在我的例子中,这是因为我通过 WSL 创建了文件夹,默认情况下它在它创建的任何新目录上启用了区分大小写(包括通过 git clone
之类的东西)。参见 here
轻松修复
这可以通过运行以下命令来解决:
fsutil file setCaseSensitiveInfo <directory> disable
更多命令
您可以通过运行来检查文件夹是否启用了区分大小写
fsutil file queryCaseSensitiveInfo <directory>
最后,一个方便的单行代码可以递归地禁用它:
for /r /d %f in (.) do (fsutil file setCaseSensitiveInfo %f disable)
(此信息最初是作为对原始问题的评论发布的,后来发现它实际上是同一个问题。请参阅其他几个人的评论以获取输入)
关于c++ - IntelliSense 无法打开源文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53815234/