web-dev-qa-db-fra.com

ignoré lors de la recherche d'un en-tête précompilé

Donc, une raison, mon fichier .cpp manque son fichier d’en-tête. Mais je n'inclus pas le fichier d'en-tête ailleurs. Je viens de commencer alors j'ai vérifié tous les fichiers que j'ai faits

enginuité.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

ne sais pas ce qui se passe. L'erreur que je reçois est

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

Avez-vous lu le message d'erreur?

erreur fatale C1010: fin de fichier inattendue lors de la recherche d'un en-tête précompilé. Avez-vous oublié d'ajouter '#include "stdafx.h"' à votre source?

Je ne vois pas #include "stdafx.h" dans enginuity.cpp. ;) Si vous utilisez des en-têtes précompilés, vous devez inclure cet en-tête dans le fichier every source (.cpp).

33
Billy ONeal

Je viens de rencontrer cette erreur lors de l'inclusion de stdafx.h dans un fichier cpp situé dans un dossier parent ci-dessus où se trouve stdafx.h.

#include "subfolder\stdafx.h"

provoque l’erreur de compilation. La changer en:

#include "stdafx.h"

corrige l'erreur de compilation, mais alors intellisense panique.

Le correctif pour intellisense, selon quelqu'un chez Microsoft ici , consiste à ajouter "$ (ProjectDir)" (ou à l'endroit où se trouve stdafx.h) à la liste des répertoires sous Projet-> Propriétés-> Configuration Propertes -> C/C++ -> Général-> Répertoires d'inclusion supplémentaires.

J'ai vérifié que cela fonctionnait dans Visual Studio 2012. Devrait également fonctionner en 2010.

21
Gordon Glas

Vous voudrez soit mettre la ligne

#include "stdafx.h"

en haut de tous vos fichiers .cpp (dans ce cas, enenuity.cpp est le seul qui en manque.

ou désactivez les en-têtes précompilés dans votre projet.

Si vous avez activé les en-têtes précompilés dans votre projet, Visual C++ recherchera cette directive #include en haut de tous vos fichiers source. Si ce n'est pas là, vous obtiendrez le commentaire négatif que vous avez reçu.

6
JohnMcG

SI LA SOLUTION APPROUVÉE NE FONCTIONNE PAS POUR VOUS:

Dans mon cas, l'inclusion stdafx.h était après l'autre inclut dans mon fichier .cpp. 

La définition de l'instruction #include "stdafx.h" en haut du fichier .cpp a corrigé mes erreurs.

5
Viktor

Il est possible de désactiver les en-têtes précompilés pour un seul fichier (VS2010). Sélectionnez le fichier .cc ou .cpp à l'origine du désagrément, le menu droit de la souris, les propriétés, les en-têtes précompilés, En-tête précompilé (remplacé par) Ne pas utiliser les en-têtes précompilés. 

3
user1577802

Il manque un enginuity.h dans votre fichier d'en-tête, #endif, ou y a-t-il une erreur dans la publication?

3
Thomas Matthews

Au lieu d'ajouter #include "stdafx.h" à chaque fichier .cpp, vous pouvez utiliser la fonctionnalité Forced Include File. La fonctionnalité est documentée ici: https://msdn.Microsoft.com/en-us/library/8c5ztk84.aspx .

Dans mon cas, j'essayais de compiler des fichiers .cpp existants d'un autre projet dans un nouveau projet. Je savais que je ne devrais pas avoir à changer chaque fichier car le projet original avait des en-têtes précompilés activés et qu'il compilait les mêmes fichiers avec succès. J'ai découvert que cette option était configurée dans le projet d'origine et l'erreur a disparu après avoir effectué la même configuration dans le nouveau projet.

2
wonderlr

Comme Viktor l'a noté ci-dessus, y compris stdafx.h after , les autres inclus causeront également cette erreur et peuvent se produire assez facilement si vous utilisez l'Assistant Ajout de fonction. Dans mon cas, l’assistant a ajouté le #include au trop fichier cpp (malgré le fait qu’il était déjà inclus) alors j’ai fini avec (en utilisant cet exemple)

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

Cette erreur se produira si vous avez deux solutions dans un sous-répertoire d'un projet et si les en-têtes précompilés sont activés. J'ai rencontré le même problème et Microsoft ne l'a pas encore résolu.

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

Le travail autour de Microsoft fonctionne parfois.

0
HaltingState

Ajoutez #include "stdafx.h" en haut de enginuity.cpp ou désactivez les en-têtes précompilés dans votre projet.

0
George