所以有些原因,我的.cpp文件缺少它的头文件。但我没有在其他地方包含头文件。我刚刚开始,所以我检查了我制作的所有文件
#ifndef _ENGINE_
#define _ENGINE_
class Enginuity
{
public:
void InitWindow();
};
#include "Enginuity.h"
void Enginuity::InitWindow()
{
}
#include "stdafx.h"
#include "GameProject1.h"
#define MAX_LOADSTRING 100
// Global Variables:
HINSTANCE hInst; // current instance
TCHAR szTitle[MAX_LOADSTRING]; // The title bar text
TCHAR szWindowClass[MAX_LOADSTRING]; // the main window class name
// Forward declarations of functions included in this code module:
ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE, int);
LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK About(HWND, UINT, WPARAM, LPARAM);
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
code.....
#endif
不知道发生了什么。我得到的错误是
1>c:\users\numerical25\desktop\intro todirectx\gameproject\gameproject1\gameproject1\enginuity.cpp(1) : warning C4627: '#include "Enginuity.h"': skipped when looking for precompiled header use
1> Add directive to 'stdafx.h' or rebuild precompiled header
1>c:\users\numerical25\desktop\intro todirectx\gameproject\gameproject1\gameproject1\enginuity.cpp(8) : fatal error C1010: unexpected end of file while looking for precompiled header. Did you forget to add '#include "stdafx.h"' to your source?
答案 0 :(得分:33)
您是否阅读了错误消息?
致命错误C1010:查找预编译标头时意外结束文件。您是否忘记在源代码中添加“#include”stdafx.h“'?
我在enginuity.cpp中没有看到#include "stdafx.h"
。 ;)如果您正在使用预编译头文件,则需要在每个源(.cpp)文件中包含预编译头文件。
答案 1 :(得分:21)
将stdafx.h包含在位于stdafx.h所在的父文件夹中的cpp文件中时,我刚刚遇到此错误。
#include "subfolder\stdafx.h"
导致编译错误。 将其更改为:
#include "stdafx.h"
修复了编译错误,然后智能感知就吓坏了。
根据Microsoft here的某个人的说法,intellisense的“修复”是将“$(ProjectDir)”(或stdafx.h所在的位置)添加到Project-> Properties下的目录列表中 - >配置属性 - > C / C ++ - > General->其他包含目录。
我已经在Visual Studio 2012中验证了这一点。也应该在2010年工作。
答案 2 :(得分:6)
你要么想要放行
#include "stdafx.h"
位于所有.cpp文件的顶部(在这种情况下,enenuity.cpp是唯一一个错过它。
或禁用项目中的预编译头文件。
如果在项目中启用了预编译头,Visual C ++将在所有源文件的顶部查找#include
指令。如果它不在那里,你会得到你收到的负面评论。
答案 3 :(得分:5)
如果批准的解决方案不适用于您:
在我的情况下,stdafx.h包含在我的.cpp文件中的其他包含之后。
在.cpp文件的顶部设置#include“stdafx.h”语句修复了我的错误。
答案 4 :(得分:3)
您的标头文件enginuity.h
缺少#endif
,或者发布时是否有错误?
答案 5 :(得分:3)
可以禁用单个文件(VS2010)的预编译头。选择导致烦恼的.cc或.cpp文件,鼠标右键菜单,属性,预编译头文件, 预编译标题(更改为)不使用预编译标题。
答案 6 :(得分:2)
您可以使用强制包含文件功能,而不是将#include“stdafx.h”添加到每个.cpp文件中。此处记录了该功能:https://msdn.microsoft.com/en-us/library/8c5ztk84.aspx。
就我而言,我试图从新项目中的另一个项目编译现有的.cpp文件。我知道我不应该更改每个文件,因为原始项目已启用预编译头文件,并且它以某种方式成功编译了相同的文件。我发现这个选项是在原始项目中配置的,在我在新项目中进行相同的配置后错误就消失了。
答案 7 :(得分:1)
当我在所有包含的顶部提到#include“ stdafx.h”时,我的问题就解决了。
答案 8 :(得分:0)
将#include“stdafx.h”添加到enginuity.cpp的顶部或禁用项目中的预编译头文件。
答案 9 :(得分:0)
如果项目的子目录中有两个解决方案并且启用了预编译头,则会发生此错误。我遇到了同样的问题,微软还没有解决它。
https://connect.microsoft.com/VisualStudio/feedback/details/552449/
微软的工作有时会起作用。
答案 10 :(得分:0)
正如Viktor上面提到的,包括stdafx.h 之后其他包含也会导致此错误,并且如果您使用添加功能向导,则可能非常容易发生。在我的情况下,向导将#include添加到cpp文件的trop(尽管已经包含它)所以我最终得到了(使用这个例子)
#include "Enginuity.h"
#include "stdafx.h"
// ... other includes ...
#include "Enginuity.h"