Компилятор MS Visual C ++ дает вам возможность выбрать, какую версию библиотеки времени выполнения MS Visual C / C ++ вы хотите связать.Возможны следующие варианты:
- / MT - Статическая ссылка на неотлаженную многопоточную версию CRT.Это дает преимущество, заключающееся в том, что вам не требуется поставлять библиотеки CRT вместе с приложением, что может потребоваться для его запуска в некоторых системах в противном случае.Недостатком является то, что код CRT, используемый вашим приложением, должен быть встроен в ваш исполняемый файл, увеличивая его размер.Это усложняется, если в вашем приложении имеется несколько исполняемых файлов и библиотек DLL, поскольку в каждый из них необходимо будет вставить много одинакового кода CRT.
- / MTd - Статически связать отладочную многопоточную версию CRT.То же, что и выше, но добавленная информация об отладке сделает его работу медленнее и станет еще больше.В основном полезно для сборок разработки.
- / MD - Динамически связывать с DLL в неотлаженной многопоточной версии CRT.Это может уменьшить размер исполняемого файла вашей программы.Эта экономия может быть усугублена, если ваше приложение состоит из нескольких исполняемых файлов и библиотек DLL, поскольку они могут совместно использовать один и тот же код CRT.Это может потребовать, чтобы вы поставили библиотеки DLL CRT или пользователи могли установить их отдельно, хотя это может быть дополнительной трудностью и сложностью.
- / MDd - Динамически связывать с DLL отладочной многопоточной версии CRT.То же, что и выше, но добавленная информация об отладке будет работать медленнее.В основном полезно для разработки.
При быстром тестировании с помощью простой программы hello world скомпилированный исполняемый файл в итоге получил около 12 КБ с / MD, а его вес - около 219 КБ с / MT, поэтомуРазница в размерах значительна, особенно если вы отправляете много небольших программ.
Раньше были также однопоточные версии библиотеки, которые теоретически могли обеспечить лучшую однопоточную производительность.и меньшего размера, но они больше не предоставляются с более новыми версиями ЭЛТ.Предположительно, различие было слишком незначительным, чтобы иметь смысл отправлять целую отдельную сборку библиотеки.