Флаги компилятора - 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 шт):

Автор решения: user7860670

CRT, которая линкуется посредством MD, распространяется в виде Visual Studio Redistributable package и (частично) в виде системных компонентов. А та, что линкуется MDd не является распространяемой. В обоих случаях нужные библиотеки можно закинуть в папку с исполняемым файлом.

→ Ссылка