web-dev-qa-db-ja.com

プリコンパイル済みヘッダーの検索時にスキップされました

そのため、何らかの理由で、.cppファイルにヘッダーファイルがありません。ただし、ヘッダーファイルは他の場所には含めません。始めたばかりなので、作成したすべてのファイルをチェックしました

enginuity.h

#ifndef _ENGINE_
#define _ENGINE_

class Enginuity
{

public:
    void InitWindow();

};

enginuity.cpp

#include "Enginuity.h"


void Enginuity::InitWindow()
{

}

main.cpp

#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?
12
numerical25

エラーメッセージを読みましたか?

致命的なエラーC1010:プリコンパイル済みヘッダーの検索中に予期しないファイルの終わり。ソースに「#include "stdafx.h"」を追加するのを忘れましたか?

Enginuity.cppに#include "stdafx.h"がありません。 ;)プリコンパイル済みヘッダーを使用している場合は、プリコンパイル済みヘッダーをevery source(.cpp)ファイルに含める必要があります。

34
Billy ONeal

Stdafx.hがある上位の親フォルダにあるcppファイルにstdafx.hを含めると、このエラーが発生しました。

#include "subfolder\stdafx.h"

コンパイルエラーが発生します。それを次のように変更します。

#include "stdafx.h"

コンパイルエラーを修正しますが、インテリセンスはおかしくなります。

Microsoftの誰かによると、IntelliSenseの「修正」 here は、Project-> Properties- >設定プロパティ-> C/C++->全般->追加のインクルードディレクトリ。

これがVisual Studio 2012で動作することを確認しました。2010でも動作するはずです。

21
Gordon Glas

あなたはどちらかの行を入れたいでしょう

#include "stdafx.h"

すべての.cppファイルの先頭(この場合、enenuity.cppだけが欠落しています。

または、プロジェクトのプリコンパイル済みヘッダーを無効にします。

プロジェクトでプリコンパイル済みヘッダーが有効になっている場合、Visual C++はすべてのソースファイルの上部でその#includeディレクティブを探します。そこにない場合は、受け取った否定的なコメントが表示されます。

6
JohnMcG

承認されたソリューションがうまくいかない場合:

私の場合、stdafx.hインクルードは.cppファイルの他のインクルードの後に​​ありました。

.cppファイルの先頭に#include "stdafx.h"ステートメントを設定すると、エラーが修正されました。

5
Viktor

1つのファイルのプリコンパイル済みヘッダーを無効にすることができます(VS2010)。煩わしさの原因となっている.ccファイルまたは.cppファイル、右マウスメニュー、プロパティ、プリコンパイル済みヘッダー、プリコンパイル済みヘッダー(に変更)、プリコンパイル済みヘッダーを使用しないを選択します。

3
user1577802

ヘッダーファイルenginuity.h#endifがないか、投稿に誤りがありますか?

3
Thomas Matthews

#include "stdafx.h"を各.cppファイルに追加する代わりに、強制インクルードファイル機能を使用できます。機能はここに文書化されています: https://msdn.Microsoft.com/en-us/library/8c5ztk84.aspx

私の場合、別のプロジェクトの既存の.cppファイルを新しいプロジェクトにコンパイルしようとしていました。元のプロジェクトではプリコンパイル済みヘッダーが有効になっていて、同じファイルを正常にコンパイルしているため、各ファイルを変更する必要がないことはわかっていました。このオプションが元のプロジェクトで構成されていることを発見しました。新しいプロジェクトで同じ構成を行った後、エラーはなくなりました。

2
wonderlr

Viktorが上記のようにstdafx.h afterを含むと、他のインクルードもこのエラーを引き起こし、関数の追加ウィザードを使用すると非常に簡単に発生する可能性があります。私の場合、ウィザードは#includeをcppファイルのtropに追加しました(既に含まれているにもかかわらず)ので、(この例を使用して)

#include "Enginuity.h"
#include "stdafx.h"
// ... other includes ...
#include "Enginuity.h"
0
Michael J.

このエラーは、プロジェクトのサブディレクトリに2つのソリューションがあり、プリコンパイル済みヘッダーが有効になっている場合に発生します。同じ問題が発生しましたが、Microsoftはまだ修正していません。

https://connect.Microsoft.com/VisualStudio/feedback/details/552449/

マイクロソフトの回避策は時々機能します。

0
HaltingState

#include "stdafx.h"をenginuity.cppの先頭に追加するか、プロジェクトのプリコンパイル済みヘッダーを無効にします。

0
George