Подтвердить что ты не робот

Пропущено при поиске предварительно скомпилированного заголовка

Итак, по какой-то причине в моем .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?
4b9b3361

Ответ 1

Вы прочитали сообщение об ошибке?

фатальная ошибка C1010: неожиданный конец файла при поиске предварительно скомпилированного заголовка. Вы забыли добавить '#include "stdafx.h" в свой источник?

Я не вижу #include "stdafx.h" в enginuity.cpp.;) Если вы используете предварительно скомпилированные заголовки, вам нужно включить предварительно скомпилированный заголовок в каждый файл источника (.cpp).

Ответ 2

Я просто испытал эту ошибку при включении stdafx.h в файл cpp, расположенный в родительской папке выше, где находится stdafx.h.

#include "subfolder\stdafx.h"

вызывает ошибку компиляции. Измените его на:

#include "stdafx.h"

исправляет ошибку компиляции, но затем intellisense отвлекается.

"Исправить", по словам кого-то из Microsoft здесь, является добавление "$(ProjectDir)" (или где бы он ни находился), в список каталогов в разделе Project- > Properties- > Configuration Propertes- > C/С++ → General- > Дополнительные каталоги Include.

Я проверил это в Visual Studio 2012. Должен работать и в 2010 году.

Ответ 3

Вы хотите либо поставить строку

#include "stdafx.h"

в верхней части всех ваших .cpp файлов (в этом случае enenuity.cpp является единственным, у которого отсутствует его.

или отключить предварительно скомпилированные заголовки в вашем проекте.

Если в вашем проекте включены предварительно скомпилированные заголовки, Visual С++ будет искать эту директиву #include в верхней части всех исходных файлов. Если это не так, вы получите отрицательный комментарий, который вы получили.

Ответ 4

ЕСЛИ УТВЕРЖДЕННОЕ РЕШЕНИЕ НЕ РАБОТАЕТ ДЛЯ ВАС:

В моем случае stdafx.h include был после того, как другие включили в мой .cpp файл.

Установка оператора #include "stdafx.h" в верхней части файла .cpp исправила мои ошибки.

Ответ 5

В файле заголовка enginuity.h отсутствует #endif, или есть ошибка в публикации?

Ответ 6

Можно отключить предварительно скомпилированные заголовки для одного файла (VS2010). Выберите файл .cc или .cpp, вызывающий раздражение, меню правой мыши, свойства, предварительно скомпилированные заголовки, Предварительно скомпилированный заголовок (изменить на) Не использовать предварительно скомпилированные заголовки.

Ответ 7

Вместо добавления #include "stdafx.h" в каждый .cpp файл вы можете использовать функцию принудительного включения файла. Эта функция описана здесь: https://msdn.microsoft.com/en-us/library/8c5ztk84.aspx.

В моем случае я пытался скомпилировать существующие .cpp файлы из другого проекта в новом проекте. Я знал, что мне не нужно менять каждый файл, потому что в исходном проекте были включены предварительно скомпилированные заголовки, и он каким-то образом скомпилировал одни и те же файлы. Я обнаружил, что этот параметр был настроен в исходном проекте, и ошибка исчезла после того, как я сделал ту же конфигурацию в новом проекте.

Ответ 8

Добавьте #include "stdafx.h" в начало enginuity.cpp или отключите предварительно скомпилированные заголовки в вашем проекте.

Ответ 9

Эта ошибка возникает, если у вас есть два решения в подкаталоге проекта и включены предварительно скомпилированные заголовки. Я столкнулся с той же проблемой, и Microsoft еще не исправила ее.

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

Работает в Microsoft, иногда работает.

Ответ 10

Как отметил Виктор, в том числе stdafx.h, после того, как другие включения также вызовут эту ошибку и могут произойти довольно легко, если вы используете Мастер добавления функций. В моем случае мастер добавил #include к trop файла cpp (несмотря на то, что он уже был включен), поэтому я закончил (используя этот пример)

#include "Enginuity.h"
#include "stdafx.h"
// ... other includes ...
#include "Enginuity.h"