尝试构建现有项目,很多“无法打开包含文件:'StdAfx.h':没有这样的文件或目录”

Posted

技术标签:

【中文标题】尝试构建现有项目,很多“无法打开包含文件:\'StdAfx.h\':没有这样的文件或目录”【英文标题】:Trying to build existing project, lots of "Cannot open include file: 'StdAfx.h': No such file or directory"尝试构建现有项目,很多“无法打开包含文件:'StdAfx.h':没有这样的文件或目录” 【发布时间】:2015-07-31 11:22:56 【问题描述】:

我收到了一个非常大的 c++ 项目的源代码,并要求我做一些小改动以支持一些新硬件。我对 c++ 不是很熟悉,因为这些天我主要使用 C#。

当我构建项目时,我得到了 20+

错误 2 错误 C1083: 无法打开包含文件: 'StdAfx.h': 没有这样的文件或目录 D:.. thefile.cpp

据我了解,“StdAfx.h”与预编译头文件有关,并且是自动生成的?

我在this question上关注了答案:

1 确保您的项目中有文件“stdafx.h”。如果你不 (例如,您将其删除)只需创建一个新的临时项目并复制 从那里默认一个;

但在这样做时注意到创建的 stdafx.h 文件没有引用的“StdAfx.h”的大写

通过从新项目中复制生成的文件并进行更改,我设法摆脱了一个错误:

#include "StdAfx.h"

到:

#include "stdafx.h"

我不禁认为这个项目使用 StdAfx.h(大约有 150 个引用)是有原因的,我不应该添加一堆分散的 stdafx.h 和 stdafx.cpp 文件周围的地方。

是否有某种方法可以引用正在使用的全局 stdafx.h 文件,这可能会导致此错误?

【问题讨论】:

你真的打算使用预编译的头文件吗?如果没有,请删除该文件,然后在您的项目中(如果您使用的是 Visual Studio)取消选择“使用预编译头文件” 我假设项目使用了预编译的头文件,因为#include。我想这可能不是故意的。我会尝试在没有它的情况下进行编译,看看它是否有效。编辑:我发现它设置为“不使用预编译头文件”,但“预编译头文件”设置为“StdAfx.h”,我会尝试删除该字段。 【参考方案1】:
    在 Windows 中,文件名不区分大小写。 您不能指望其他人的 stdafx.h 文件会在您的项目中有用。您需要找到原始的。 通常,一个项目使用一个头文件作为预编译头文件,由包含它的每个源文件共享。

【讨论】:

以上是关于尝试构建现有项目,很多“无法打开包含文件:'StdAfx.h':没有这样的文件或目录”的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 升级到 3.1 后无法构建/同步新项目或现有项目

从现有 cmake 应用程序导入的 Netbeans 项目无法在 Windows 上构建并出现文件系统错误

尝试比较现有Java Project的Ant构建到Maven或Gradle的迁移吗?

使用 Visual Studio 2017 在 Linux 上构建现有 C++ 解决方案

将现有 JavaScript 项目导入 Grunt/Brunch 项目

尝试构建和现有flutter应用程序时出现flutter web错误