Я обнаружил ошибку в Visual Studio, Please use the /MD switch for _AFXDLL builds
поэтому, если я не могу определить _AFXDLL
, будет ли моя программа ошибочной?
#error Используйте переключатель /MD для сборки _AFXDLL
Ответ 1
Настройки привязки CRT и привязки MFC должны быть согласованными. Итак, на самом деле есть два возможных ответа на этот вопрос:
-
Использование/MT (Свойства → C/С++ → Генерация кода) и статический MFC (Свойства → Общие → Использование MFC)
-
Использование/MD (Свойства → C/С++ → Генерация кода) и общий MFC (Свойства → Общие → Использование MFC)
Ответ 2
Да, будет. Что вам нужно сделать, так это перейти к свойствам проекта Visual Studio. В Свойствах конфигурации → C/С++ → Генерация кода убедитесь, что вы используете многопоточную Dll для вашей библиотеки времени выполнения.
Это решит ваши проблемы.
Ответ 3
Чтобы статически связать мою программу с файлом Crt.dll, я переключил компилятор Visual Studio 2017 option-
Настройки проекта | C/C++ | Генерация кода | Библиотека времени исполнения
из многопоточной DLL/MD,
к многопоточному /MT сообщение выскочило up-
E0035 - #error Пожалуйста, используйте ключ /MD для сборок _AFXDLL
Didn't make sense, because I'm making an .exe program, not a .dll.
This is a project that I imported from VC6. Scanning the project files for _AFXDLL, it wasn't found. It Was found though in the past.. in my dialog Label.cpp file, as defined....
#ifdef _AFXDLL
Enable3dControls();
#else
Enable3dControlsStatic();
#endif.
I commented out all four of these lines.
_AFXDLL must have been in there somewhere, deep inside the project(?), because commenting out the lines didn't help.
The program finally did link the CRT file when I put in what the first poster suggested, into the start of Stdafx.h , line 10... after the #if !defined, then #define lines.
#undef _AFXDLL.
It went in size from 110KB to 2040K, and works fine in a different computer.
~~~~~~~~
Thank You Jesus!