46

我在 Visual Studio 2008 中创建了一个空的“演示”项目,并将一些现有项目添加到我的解决方案中。在“Demo”中的 main.cpp 文件中包含“MyHeader.h”(其他项目的头文件)。还在“工具/选项/VC++ 目录/包含文件”部分添加了头文件的路径。但是智能感知说:“在当前源文件的目录或构建系统路径中找不到文件'MyHeader.h'......”

如何解决问题?谢谢。

4

15 回答 15

27

删除解决方案目录中的 .sdf 文件。它只是 Intellisense 数据库,Visual Studio 将在您下次打开该解决方案时重新创建它。此数据库可能会损坏并导致 IDE 无法找到内容,并且由于编译器会即时为自己生成此信息,因此不会受到影响。

于 2013-08-05T21:28:58.100 回答
23

如果您选择Project然后All Files在菜单中,则所有文件都应显示在解决方案资源管理器中,这些文件物理上位于您的项目地图中,但(尚未)包含在您的项目中。如果您在解决方案资源管理器中右键单击要添加的文件,则可以包含它。

于 2012-09-19T07:14:52.390 回答
8

刚刚在我身上发生了这种情况,关闭并重新启动计算机后。最终我意识到架构已经从 x64 更改为 ARM。

于 2017-05-14T19:07:32.390 回答
3

如果只有 IDE 指示找不到包含的文件,但编译成功,则问题只是 IntelliSense 没有完全与最近的更改保持同步。根据我自己的经验,在包含现有项目时,这可能会特别发生。删除在您的解决方案目录中生成的 .sdf 文件(= IntelliSense 数据库)会强制 Visual Studio 重新生成它,以便它再次保持最新状态。只是做一个“干净”可能会做同样的事情,但需要更多时间,因为那时一切都会再次生成。

于 2014-05-15T12:38:24.387 回答
3

我知道这是一个较老的问题,但以上答案都不适合我。就我而言,问题原来是我有绝对包含路径但没有驱动器号。编译很好,但是当我右键单击并尝试打开它时,Visual Studio 找不到包含文件。将驱动器号添加到我的包含路径可以解决问题。

我绝不会建议在项目文件的任何方面硬编码驱动器号;对于任何永久性情况,可以使用相对路径、宏、环境变量或树的某种组合。但是,在这种情况下,我正在从事一些短期内需要绝对路径的临时项目。无法右键单击打开文件非常令人沮丧,希望这对其他人有帮助。

于 2017-01-24T20:14:13.210 回答
2

在我的情况下,在 Visual Studio 2019 中,我将一个头文件复制到项目目录中,就在其他文件附近。Intellisense 可以看到它,但构建失败。很公平,它实际上并没有添加到项目中。我将它添加为现有项目,但这是 Visual Studio 仍然没有考虑到它的一点。
解决方案:

  1. 关闭项目。
  2. 删除.vs目录。
  3. 重新打开项目。现在 Visual Studio 重新创建包含所有内容的目录,它现在可以看到包含的文件。
于 2021-03-18T09:51:47.667 回答
1

以我的经验,使用 VS2010,当在编译时找不到包含文件时,进行清理,然后构建通常可以解决问题。编辑器能够打开一个包含文件然后编译器宣布它找不到那个文件的情况并不少见,即使它在屏幕上打开也是如此!

于 2013-03-28T16:26:03.393 回答
1

从 2015 年升级到 Visual Studio 2019 后,我遇到了这个问题。它可以很好地编译项目,但 Intellisense 和 IDE 找不到任何头文件。

该项目只有 Win32/Debug 的有效配置。没有为其他环境正确设置包含路径。尽管 Visual Studio 将当前环境显示为 Win32/Debug,但 Intellisense 一定是在使用其他东西。

将当前环境更改为 x64/Release,然后回到 Win32/Debug 修复它。

于 2021-04-29T08:33:33.197 回答
1

如果 Visual Studio 说您错过了当前源文件夹中的某个文件,那么我使用了一种解决方案。只需右键单击要添加的文件并选择Open Document,如果它确实不存在,那么您应该会看到类似 的cannot find file in the source file path = "somewhere in your computer"内容,那么您可以做的就是先将源文件添加到该路径中,看看它是否有效。

于 2017-03-30T17:27:49.557 回答
0

尝试将头文件添加到项目文件中。(右键单击项目-> 添加现有文件)。

于 2012-09-19T07:13:23.770 回答
0

这是我解决这个问题的方法。

  • 转到项目 --> 显示所有文件。

在此处输入图像描述

  • 右键单击解决方案资源管理器中的所有文件,然后在要包含的所有文件中单击包含在项目中。

在此处输入图像描述

完毕 :)

于 2017-03-04T21:30:33.310 回答
0

如果某个灵魂向下滚动到这个底部,那么对我有用的是禁用Disable Database选项,即将它设置为Falseunder Tools|Options|Text Editor|C/C++|Advanced。出于某种原因,它是True为我设置的。

在此处输入图像描述

根据docs,如果它设置为True

代码浏览数据库 (SDF) 的所有使用、所有其他浏览/导航选项以及除 #include 自动完成之外的所有 IntelliSense 功能均被禁用。

于 2021-06-02T00:20:29.707 回答
0

有同样的问题。仔细检查您是否将包含文件添加到项目的调试发布版本中。如果您只为其中一个添加它并为另一个 VS 编译只会装傻而找不到它们。

于 2021-11-08T15:45:53.270 回答
0

在 Visual Studio 中,单击Project>Rescan Solution如下图所示重建项目数据库。

在此处输入图像描述

于 2021-12-30T08:58:07.120 回答
0

我遇到了这个问题,但提供的解决方案并没有直接帮助我,所以我分享了我是如何让自己陷入类似情况并暂时解决的。

我在现有解决方案中创建了一个新项目,并从该解决方案中的另一个项目复制并粘贴了 Header 和 CPP 文件,我需要通过 IDE 将其包含在我的新项目中。Intellisense 显示一个错误,提示它无法解析对头文件的引用,并且编译代码也失败并出现同样的错误。

看完这里的帖子后,我用 Windows 文件资源管理器检查了项目文件夹,只找到了main.cpp文件。出于某种原因,我对头文件和 CPP 文件的复制和粘贴只是一个参考?(我假设)并且没有将文件物理复制到新的项目文件中。

我从 Visual Studio 中的项目视图中删除了文件,并使用文件资源管理器将所需的文件复制到项目文件夹/目录中。然后我通过显示所有文件引用了此处发布的其他解决方案以“在项目中包含文件”,这解决了问题。

它归结为文件不在项目文件夹/目录中,即使它们在 IDE 中正确显示。

请注意我理解复制代码不是最佳实践,我的情况纯粹是一个学习/爱好项目。在重用来自其他项目的代码时,正确使用 IDE/项目/解决方案设置可能符合我的最大利益以及最终遇到类似情况的任何其他人 - 我仍在学习,总有一天我会解决这个问题的!

于 2020-04-16T09:22:46.137 回答