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