Visual Studio 2010 включает MFC, даже если указано пустое консольное приложение (C++)

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

Я создал консольное приложение в Visual C++ и указал, что оно пусто. После размещения всего моего источника в виртуальной папке и его компиляции произошла ошибка:

c:program файлыМайкрософт Visual Студио 10.0ВКatlmfcвключитькомпании AFX.H (24): фатальная ошибка C1189: #ошибка: построение приложения MFC с /MD[d] (версия dll CRT) требует MFC общая версия dll. Пожалуйста #define _AFXDLL или не используйте /MD[d]

c:program файлыМайкрософт Visual Студио 10.0ВКatlmfcвключитькомпании AFX.H (24): неустранимая ошибка C1189: #ошибка : для создания приложения MFC с /MD[d] (версия dll CRT) требуется версия MFC shared dll. Пожалуйста #define _AFXDLL или не используйте /MD[d]

c:program файлыМайкрософт Visual Студио 10.0ВКatlmfcвключитькомпании AFX.H (24): фатальная ошибка C1189: #ошибка: построение приложения MFC с /MD[d] (CRT dll версия) требует MFC общей версии dll. Пожалуйста #define _AFXDLL или не используйте /MD[d]

действительно странная ошибка, потому что я никогда не включал файлы MFC. Поэтому я исправил ситуацию, указав "/MT " в настройках генерации кода.

Он работал хорошо...пока я не решил включить " Windows.h", который породил эту ошибку:

c:program файлыmicrosoft visual studio 10.0vcatlmfcincludeafxv_w32.h (16): фатальная ошибка C1189: #ошибка : ОКНА.Ч уже включена. Приложения MFC не должны #включать windows.h

c:program файлыmicrosoft visual studio 10.0vcatlmfcincludeafxv_w32.h (16): фатальная ошибка C1189: #ошибка: WINDOWS.Ч уже включена. Приложения MFC не должны #включать windows.h

Я пробовал все, что мог придумать, включая воссоздание проекта с предварительно скомпилированными заголовками и без них, приложение Win32, а не консоль, и приложение WxWidget. Все эти приложения, по-видимому, пытаются включите MFC, хотя я никогда не указывал. Может ли кто-нибудь пролить свет на эту проблему? Спасибо!

3 ответов


узнайте, что включает в себя заголовки MFC -/showIncludes опция может помочь в этом.

что на странице проекта IDE объекта:

C/C++ | Advanced | Show Includes

как только вы узнаете, кто их включает, вы можете принять решение о том, как решить проблему - вы можете просто удалить заблудшего #include, но это может потребовать удаления используемой библиотеки, которая зависит от MFC.


убедитесь, что "использование MFC" находится в параметре "использовать MFC в общей DLL". Это все исправило.


Если требуется MFC, задайте следующие значения (Debug / Win32):

Свойства Конфигурации > Общие :

использование MFC: использование MFC в общей DLL

Свойства Конфигурации > C / C++ > Генерация Кода:

Библиотека Времени Выполнения: / MDd

Если MFC не требуется, и только стандартные библиотеки окна необходимы, держат установку как под.

Свойства Конфигурации > Общие :

использование MFC: используйте стандартные библиотеки Windows

Свойства Конфигурации > C / C++ > Генерация Кода:

Библиотека Времени Выполнения: / MTd