Флаги компилятора - MT, MTd, MD, MDd
Подскажите пожалуйста, как я понял флаги компилятора:
-MT - Говорит компилятору скомпилировать код статическим CRT
-MTd - Говорит компилятору скомпилировать код статическим CRT видимо в дебаг режиме
-MD - Говорит компилятору скомпилировать код с динамическим CRT
-MDd - Говорит компилятору скомпилировать код с динамическим CRT видимо в дебаг режиме
У меня вопрос, если библиотека CRT - поставляется вместе с Visual Studio, то теоретически код скомпилированный с флагами MD и MDd - не должен запустится на Windows на котором VS не установлена ?
Но фактически получается, что, на Windows на котором Visual Studio не установлена - не запускается exe-шник скомпилированный в дебаг режиме MDd, Windows так и пишет, что не хватает каких то там файлов.
А вот код скомпилированный в release, но все так же динамически MD - без проблем запускается.
Но почему ?
Ответы (1 шт):
CRT, которая линкуется посредством MD, распространяется в виде Visual Studio Redistributable package и (частично) в виде системных компонентов. А та, что линкуется MDd не является распространяемой. В обоих случаях нужные библиотеки можно закинуть в папку с исполняемым файлом.