IntelliSense无法打开源文件



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

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

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

  • 解决方案属性设置正确;项目确实在没有任何抱怨的情况下构建。

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

  • 我可以使用'open Document"class.h">'对话框从引用它的源文件中打开头文件。

我已经遇到了这个:

  • IntelliSense:无法打开包含路径中的源文件
  • Intellisense无法打开源文件"*"。h〃

到目前为止,没有任何东西能解决我的问题。有人遇到这个问题了吗?

TL;DR

  • 一切都很好
  • "C/C++->常规->其他包含目录"设置正确
  • 还设置了"VC++目录->包含目录">
  • 在编写include指令时,IntelliSense正确地建议头文件
  • 但是据报道IntelliSense无法打开文件,因此无法对其进行索引
  • 我被一个花哨但资源匮乏的文本编辑器卡住了

编辑:

我正在开发MacBook"13 2016;通过Bootcamp安装了Windows 10 Pro 64位。

出现此问题是因为Windows现在可以选择区分文件夹大小写,而intellisense有更改尝试打开的文件大小写的习惯。

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

在我的情况下,这是因为我通过WSL创建了文件夹,默认情况下,WSL在它创建的任何新目录上都启用了区分大小写功能(包括通过git clone等方式(。参见此处

轻松修复

这可以通过运行以下程序来修复:

fsutil file setCaseSensitiveInfo <directory> disable

更多命令

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

fsutil file queryCaseSensitiveInfo <directory>

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

for /r /d %f in (.) do (fsutil file setCaseSensitiveInfo %f disable)

(这条信息最初是作为对原始问题的评论发布的,后来发现它实际上是同一个问题。请参阅其他几个人的评论(

对于在Visual Studio 2022中打开的一个Linux项目,我尝试了@yothsoggoth的公认答案,这对我来说很有意义,但不幸的是没有成功
我意识到visual studio甚至无法使用F12从标准库打开C++文件,但它可以从其他库打开其他文件
因此,在我的情况下,解决方案是关闭visualstudio,备份用作缓存的文件夹。C:Users[user]AppDataLocalMicrosoftLinuxC:Users[user]AppDataLocalMicrosoftLinux.bak
然后我重新打开Visual Studio,让CMake重新生成缓存
错误现在已经消失,我现在甚至可以用F12从C++std库打开<string>和其他。
我希望这个解决方法能帮助其他

我在Visual Studio代码及其Intellisense C++扩展在交叉编译环境中工作时也遇到了类似的问题(使用SysGCC(。

VS代码IntelliSense插件找不到源文件。我使用了"fsutil"-ed的"C:\SysGCC…"并且签出源目录是"区分大小写"的(以避免与Linux区分大小写文件的命名冲突(。因此,使用"fsutils"关闭目录的区分大小写功能也会有所帮助。

(根据VSCode CppTools和"区分大小写"的结账,他们也有一个选项C_Cpp.aseSentiveFileSupport。(

相关内容

  • 没有找到相关文章

最新更新