Error Пожалуйста, #define _AFXDLL или не использовать /MD [d] происходит даже после внесения изменений в свойства проекта
Я работаю над проектом Win32 в Visual Studio 2011. Он генерирует ошибку MFC, когда я включаю afx.h или afxwin.h.
Чтобы решить эту проблему, я внесли следующие изменения на вкладке "Свойства проекта":
1) Использование MFC: использование MFC в общей DLL
2) С++ → Генерация кода → Библиотека времени выполнения → Многопоточная отладка DLL (/MDd)
Тем не менее, он вызывает следующую ошибку при построении решения:
1>C:\Program Files (x86)\Microsoft Visual Studio 11.0\vc\atlmfc\include\afx.h(24): fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MD[d]
Мой вопрос в том, почему проект Win32 генерирует ошибку MFC и как я должен удалить эту ошибку. Обращайтесь за мной.
Ответы
Ответ 1
В Visual Studio 2011 это сработало для меня:
Project -> "project" Properties -> Configuration Properties -> C/C++ -> Advanced -> Show Includes:
YES(/showIncludes)
Project -> "project" Properties -> Configuration Properties -> General -> Project Defaults -> Use of MFC :
Use MFC in a shared DLL
Ответ 2
У меня была такая же проблема, но я только решил ее, когда понял, что мне нужно установить флаг "Использовать MFC в общей DLL" для обеих конфигураций отладки и выпуска (я только установил его для отладки).
Ответ 3
По моему опыту, это двухступенчатый шаг.
Предположим, вы хотите STATIC-ссылку:
a) установите " Использовать MFC в статической библиотеке"
b) добавить:
#define _AFXDLL 1
в stdafx.h
работает на VS 2012
Ответ 4
Я боролся с подобной проблемой. В моем случае это было вызвано настройками, которые были прикреплены к отдельным файлам cpp. Поскольку они содержали символы препроцессора, они фактически блокировали параметры уровня проекта (или реквизита), в которых используются символы препроцессора.
Поэтому проверьте, есть ли у вас настройки уровня файла в вашем vcxproj. Если да, проверьте, соответствуют ли они настройкам уровня проекта. Если они есть, вы можете безопасно их удалить. Если есть различия, вам нужно разобраться с этим.
Настройки уровня файла Cpp обычно должны быть пустыми (есть некоторые исключения, когда они вам нужны), но их легко добавить случайно.
Ответ 5
Я получал эту ошибку, потому что я неправильно настроил конфигурацию проекта на " Использовать MFC в общей DLL ". Моя ошибка заключалась в том, что я установил эту опцию только для режима Release, и когда я скомпилирован в режиме Debug, я получил эту ошибку. Применение настроек для конфигурации режима Debug & Release помогло мне решить эту проблему.
Ниже приведены настройки:
Project → "project" → Свойства конфигурации → Общие → По умолчанию по умолчанию → Использование MFC: использование MFC в общей DLL
Ответ 6
Ошибка включает в себя строку написать "#define _AFXDLL"
ех)
определить _AFXDLL
включают
Ответ 7
Открыть
Свойства проекта → Свойства конфигурации → C/C++ → Генерация кода → Библиотека времени выполнения
Выберите "Многопоточный" (/MT) в разделе "Библиотека времени выполнения".
Это удалит вашу ошибку. Наслаждаться.
Ответ 8
Для меня цель должна была быть изменена с x64 на x86.
Ответ 9
Я также столкнулся с той же ошибкой. Сообщение об ошибке самоочевидно.
Вам нужно добавить #define _AFXDLL
в ваш файл AFX.h
.
Ответ 10
Коснитесь #define _AFXDLL
косвенно параметрами конфигурации проекта