В WINDOWS.H уже включена ошибка - PullRequest
9 голосов
/ 22 марта 2011


Я получаю сообщение об ошибке при попытке скомпилировать небольшую программу на C ++
Ошибка 87 Фатальная ошибка C1189: #error: WINDOWS.H уже включен. Приложения MFC не должны #include c: \ program files \ microsoft visual studio 9.0 \ vc \ atlmfc \ include \ afxv_w32.h 16

Я убедился, что windows.h не был включен ни в один из файлов проекта, которые у меня есть. Я использую Visual Studio 2008 IDE

Есть причина почему?

Ответы [ 6 ]

14 голосов
/ 22 марта 2011

причина в том, что что-то является , включая Windows.h: компилятор не обманывает вас.

Перейдите в Свойства проекта-> Свойства конфигурации-> C / C ++ -> Дополнительно и установите для параметра Показать вкл. Значение Да. Затем создайте, и компилятор покажет вам список с каждым найденным включенным файлом, и в том порядке, в котором он его найдет, сообщив вам, какой файл в конечном итоге включает в себя windows.h

8 голосов
/ 05 апреля 2012

попробуйте включить afxcoll.h до stdafx.h .У меня была такая же проблема, и она это исправила.См. http://social.msdn.microsoft.com/forums/en-US/vcgeneral/thread/2ab6862f-0d90-467a-b283-f62f6aef96fe/ для оригинального обсуждения.

3 голосов
/ 09 августа 2012
#include "afxwin.h"         // MFC core and standard components
#include "afxext.h"         // MFC extensions

Добавив их в мой файл stdafx.h, я разобрался с этой ошибкой ... надеюсь, это поможет кому-то еще.

1 голос
/ 23 апреля 2014

В вашем проекте перейдите в Свойства конфигурации-> C / C ++ -> Скомпилированные заголовки.Убедитесь, что для параметра Precompiled Header установлено значение Использовать (/ Yu) .

Этот параметр «Включает создание или использование предварительно скомпилированного заголовка во время сборки».

1 голос
/ 22 марта 2011

Visual Studio по умолчанию будет дефилировать вашу программу с помощью предварительно скомпилированного файла заголовков, который может содержать что-то, что включает в себя что-то, включающее windows.h.Обязательно проверьте там.

0 голосов
/ 08 сентября 2016

Проблема, с которой я столкнулся, заключалась в том, что файл "stdafx.h" был включен в файл "StdAfx.h", а имя файла в свойствах конфигурации -> C / C ++ -> Precompiled Headers никогда не обновлялось из "stdafx. h "до" StdAfx.h ".

...