我最近从Code::Blocks转到Visual Studio,在Code :: Blocks中,可以添加一个类,然后立即包含它。但是,每当我在Visual Studio中使用以下语句执行相同操作时:
#include "includedFile.h"
或
#include "include/includedFile.h"
它不起作用,而是我收到错误:
无法打开包含文件:'includedFile.h';没有这样的文件或目录。
是否有一些盒子或设置我必须打勾?或者我是否必须手动将每个标头添加为依赖项?
以下是相关课程的代码:
#pragma once
class Public
{
public:
static const int SCREEN_WIDTH=1000;
static const int SCREEN_HEIGHT=1250;
Public(void);
~Public(void);
};
Public.cpp:
#include "Public.h"
Public::Public(void)
{
}
Public::~Public(void)
{
}
如何包含它:
#include "Public.h"
答案 0 :(得分:29)
我有同样的问题从例如gcc到Visual Studio进行C编程。 确保您的包含文件实际位于目录中 - 不仅仅显示在VS项目树中。对于我的其他语言,复制到项目树中的文件夹确实会将文件移入。使用Visual Studio 2010,粘贴到“头文件”中并不会将.h文件放在那里。
请检查您的实际目录中是否存在包含文件。将它放入项目/解决方案资源管理器中的“头文件”文件夹是不够的。
答案 1 :(得分:20)
转到项目属性(项目 - >属性 - >配置属性 - > C / C ++ - >常规),然后在附加包含目录字段中添加.h文件的路径。
确保您的配置和平台是活动的。示例:配置:活动(调试)平台:活动(Win32)。
答案 2 :(得分:17)
如果预处理器不在项目文件夹中,则需要设置预处理器的路径以搜索这些包含文件。
您可以在VC++ Directories或Additional Include Directories中设置路径。两者都在项目设置中找到。
答案 3 :(得分:15)
默认情况下,Visual Studio会在项目所在的文件夹($ ProjectDir)和默认标准库目录中搜索标头。如果您需要包含未放置在项目目录中的内容,则需要添加要包含的文件夹的路径:
转到项目属性(项目 - >属性 - >配置属性 - > C / C ++ - >常规),然后在字段Additional Include Directories
中添加.h文件的路径。
您也可以按照Chris Olen的建议添加VC ++目录字段的路径。
答案 4 :(得分:5)
我发现这篇文章是因为我在Microsoft Visual C ++中遇到了同样的错误。 (虽然看起来它的原因与上面提到的问题有点不同。)
我把文件放在同一个目录中,但我仍然无法找到。
我的包含如下:#include <ftdi.h>
但是当我把它更改为:#include "ftdi.h"
然后就找到了它。
答案 5 :(得分:1)
我也在这里尝试了其他答案,但我的问题与包含路径或文件缺少不正确的 #include
无关。我有两个配置,每个配置都设置为完全相同的包含目录。一种配置可以解析包含,另一种不能。
选择我的项目并转到项目 -> 属性后,我通过配置下拉菜单 -> 多个配置...选项选择了两种配置。比较两者我发现 C/C++ -> Language -> Conformance Mode 是不同的。由于某种原因,“不正确”配置的值为 Default
,将其切换为 Yes
或 No
允许解析路径。
TL;DR:如果您有一个包含相同包含目录的配置,但另一个没有找到文件,我建议您尝试比较配置。
答案 6 :(得分:0)
如果您尝试了其他答案,但仍然找不到包含文件,请执行以下一些附加调试步骤和健全性检查:
#include
头文件的整个绝对路径,然后查看是否可以立即找到该文件。如果没有,请复制源代码中的路径并将其粘贴到命令行中,以验证文件是否存在于该完整路径中且没有错字。打开头文件,以确保您具有读取权限。 (完成后将源代码改回来。)Additional Include Directories
,请尝试单击Additional Include Directories
的下拉组合框,然后选择<Edit...>
。这将向您显示evaluated values
的路径。 (如果未显示正确的评估值,则可能未设置路径中的变量。单击Macros>>
以查看变量。)将评估的路径复制粘贴到Windows资源管理器中,以验证路径是否存在。 答案 7 :(得分:0)
这是一个奇怪的解决方案(老实说,我不完全理解),这是我对这个问题的回答。
在属性-> C ++->常规窗口中,而不是将路径链接到“其他包含目录”中的文件。放入“。”并取消选中“来自父项或项目默认项的继承人”。
希望这会有所帮助。
答案 8 :(得分:0)
如果问题仍然存在,那肯定是因为您试图编译与当前设置不同的版本。
例如,如果您在Debug x64中设置了Additional Include Directories
,请确保使用相同的配置进行编译。
检查以下内容:Build > Configuration Manager... >
您的活动解决方案配置中可能有类似以下内容:Debug x86 (Win32) platform
。