尝试构建现有项目,很多“无法打开包含文件:'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++ 解决方案