пропускается при поиске предварительно скомпилированного заголовка - PullRequest
12 голосов
/ 01 июня 2010

По какой-то причине в моем файле .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?

Ответы [ 10 ]

33 голосов
/ 01 июня 2010

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

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

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

21 голосов
/ 07 октября 2012

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

#include "subfolder\stdafx.h"

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

#include "stdafx.h"

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

«Исправление» для intellisense, по мнению кого-то из Microsoft здесь , заключается в добавлении «$ (ProjectDir)» (или где бы то ни было stdafx.h) в список каталогов в Project-> Свойства-> Свойства конфигурации-> C / C ++ -> Общие-> Дополнительные каталоги включения.

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

6 голосов
/ 01 июня 2010

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

#include "stdafx.h"

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

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

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

5 голосов
/ 28 сентября 2012

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

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

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

3 голосов
/ 11 марта 2013

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

3 голосов
/ 01 июня 2010

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

2 голосов
/ 03 сентября 2015

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

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

0 голосов
/ 08 декабря 2014

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

#include "Enginuity.h"
#include "stdafx.h"
// ... other includes ...
#include "Enginuity.h"
0 голосов
/ 08 июля 2012

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

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

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

0 голосов
/ 01 июня 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...