【问题标题】:Visual Studio can't 'see' my included header filesVisual Studio 无法“看到”我包含的头文件
【发布时间】:2012-09-11 11:38:04
【问题描述】:

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

如何解决问题?谢谢。

【问题讨论】:

  • #include 和#include "file.h" 是有区别的。 stackoverflow.com/questions/21593/… 另外我建议您使用相对路径而不是使用 VS 目录。这将确保项目与位置无关。
  • 是否只有智能感知会给出这些错误(即正常构建是否运行良好)?然后我会尝试停止 Visual Studio(可能删除受影响项目的 .suo/.sdf 文件),重新启动 vs

标签: c++ visual-studio-2008 include


【解决方案1】:

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

【讨论】:

  • 这不会让编译器找到你的头文件 - 你需要为此设置包含目录
  • @RandolphCarter 他说的是智能感知而不是编译器。我知道这对编译器没有帮助。编译器需要的是他已经设置好的“Tools/Option/VC++ Directories/Include files”中的设置。
  • 添加标题有助于智能感知?奇怪,编译器和智能感知不应该使用相同的选项吗?
  • 谢天谢地,2010 年及以后解决了这个问题,以及 IntelliSense 的许多其他问题。仍然不完美,但更好。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 这通常在您手动修改项目文件(*.vcxproj 和 *.vcxproj.user)时需要:IDE 不知道您的更改,因此不会相应地更新智能感知数据库。
      • 在 Visual Studio 2015 中为我工作
      • 使用 VS2017 我在 project_dir/.vs/project_name/v15/ 中找到了 Browse.VC.db 和 Solution.VC.db 并删除了这些文件。 Intellisense 然后能够正确地重新创建它的数据库。
      • 用VS2019:关闭VS,删除项目目录下隐藏的.vs目录。然后再次编译。为我工作。
      • 使用 VS2019 和 CUDA 标头:仅帮助删除 Browse 和 Solution VC dbs,就像之前建议的那样。
      【解决方案5】:

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

      【讨论】:

        【解决方案6】:

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

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

        【讨论】:

          【解决方案7】:

          我是这样解决这个问题的。

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

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

          完成:)

          【讨论】:

            【解决方案8】:

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

            【讨论】:

              【解决方案9】:

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

              【讨论】:

                【解决方案10】:

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

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

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

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

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

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

                【讨论】:

                  【解决方案11】:

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

                  1. 关闭项目。
                  2. 删除.vs 目录。
                  3. 重新打开项目。 现在 Visual Studio 会重新创建包含所有内容的目录,并且现在可以看到包含的文件。

                  【讨论】:

                    【解决方案12】:

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

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

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

                    【讨论】:

                      【解决方案13】:

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

                      根据docs,如果设置为True

                      所有使用代码浏览数据库(SDF),所有其他 浏览/导航选项和所有 IntelliSense 功能,除了 #include 自动完成功能已禁用。

                      【讨论】:

                        【解决方案14】:

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

                        【讨论】:

                          【解决方案15】:

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

                          【讨论】:

                            猜你喜欢
                            • 2016-12-18
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 2016-07-02
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            相关资源
                            最近更新 更多