Visual Studio 2010 включает MFC, хотя указано пустое консольное приложение (C ++) - PullRequest
8 голосов
/ 14 мая 2011

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

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

c: \ program files \ microsoft visual studio 10.0 \ vc \ atlmfc \ include \ afx.h (24): фатальная ошибка C1189: #error: Создание приложения MFC с / MD [d] (версия CRT dll) требует MFC расшарил версию dll. Пожалуйста #define _AFXDLL или не используйте / MD [d]

c: \ program files \ microsoft visual studio 10.0 \ vc \ atlmfc \ include \ afx.h (24): фатальная ошибка C1189: #error: Сборка приложения MFC с / MD [d] (версия CRT dll) требует MFC расшарил версию dll. Пожалуйста #define _AFXDLL или не используйте / MD [d]

c: \ program files \ microsoft visual studio 10.0 \ vc \ atlmfc \ include \ afx.h (24): фатальная ошибка C1189: #error: Создание приложения MFC с / MD [d] (версия CRT dll) требует MFC расшарил версию dll. Пожалуйста #define _AFXDLL или не используйте / MD [d]

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

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

c: \ program files \ microsoft visual studio 10.0 \ vc \ atlmfc \ include \ afxv_w32.h (16): фатальная ошибка C1189: #error: WINDOWS.H уже включена. Приложения MFC не должны #include windows.h

c: \ program files \ microsoft visual studio 10.0 \ vc \ atlmfc \ include \ afxv_w32.h (16): фатальная ошибка C1189: #error: WINDOWS.H уже включена. Приложения MFC не должны #include windows.h

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

Ответы [ 3 ]

7 голосов
/ 14 мая 2011

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

Который на странице свойств проекта IDE находится под:

C/C++ | Advanced | Show Includes

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

5 голосов
/ 14 февраля 2012

Убедитесь, что для параметра «ИСПОЛЬЗОВАНИЕ МФЦ» задано значение «Использовать МФЦ в общей библиотеке DLL».Это исправило это для меня.

2 голосов
/ 21 января 2014

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

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

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

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

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

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

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

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

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

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

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