Подтвердить что ты не робот

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 и как я должен удалить эту ошибку. Обращайтесь за мной.

4b9b3361

Ответ 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

  1. Открыть

    Свойства проекта → Свойства конфигурации → C/C++ → Генерация кода → Библиотека времени выполнения

  2. Выберите "Многопоточный" (/MT) в разделе "Библиотека времени выполнения".

Это удалит вашу ошибку. Наслаждаться.

Ответ 8

Для меня цель должна была быть изменена с x64 на x86.

Ответ 9

Я также столкнулся с той же ошибкой. Сообщение об ошибке самоочевидно.

Вам нужно добавить #define _AFXDLL в ваш файл AFX.h.

Ответ 10

Коснитесь #define _AFXDLL косвенно параметрами конфигурации проекта