TL; DR: Если вы используете Visual C ++ и используете стандартные инструкции REDIST из Документов Microsoft , то эти подробности не должны иметь для вас никакого значения.
В VS 2015 и более поздних версиях «Среда выполнения C / C ++» была реорганизована на три части:
UCRTBASE.DLL
является частью ОС и обслуживается через Windows Обновление , В пакете REDIST для Visual C ++ есть версии «нижнего уровня», но обычно вы должны думать об этом как о части «ОС». Это "C Runtime". Эти заголовки, библиотеки импорта и находятся в Windows 10 SDK. Вы также можете найти его источник там C:\Program Files (x86)\Windows Kits\10\Source\<version>\ucrt
.
MSVCP*.DLL
Это библиотека "C ++ Runtime", в основном такая, как std::vector
et al. Заголовки, библиотеки импорта и тому подобное находятся в продукте Visual C ++. Вы можете найти источник к нему на GitHub за этот пост в блоге .
VCRUNTIME*.DLL
имеет точки входа, необходимые во время выполнения для возможности языка компилятора Visual C ++.
Есть также несколько вспомогательных библиотек для спецификаций c scenar ios:
VCCORLIB*.DLL
используется для C ++ / CX расширений (он же /ZW
)
VCAMP140.DLL
используется для C ++ AMP
VCOMP140.DLL
используется для OpenMP
CONCRT*.DLL
используется для реализации C ++ 11 <thread>
на Windows XP (не используется в более новых версиях Windows; при необходимости загружается задержка)
См. это сообщение в блоге и это сообщение .
По существу, часть C runtime (UCRTBASE) является простым extern "C"
интерфейсом, поэтому ABI четко определен и, следовательно, может использоваться с несколькими версиями Visual C ++ и даже с другими компиляторами. То, какая именно версия UCRT вы используете, следовательно, в первую очередь зависит от ОС и Windows 10 SDK, который вы используете через WindowsTargetPlatformVersion
. Вы также можете локально развернуть UCRT для этого этого блога .
Среда выполнения C ++ (MSVCP * .DLL) включает в себя множество встроенных и открытых структур памяти, и исторически существовало существенное изменение между между версиями Visual C ++. Тем не менее, для VS 2015 Update 3, VS 2017 и VS 2019 команда V C сделала ставку на то, чтобы поддерживать «двоичную совместимость», что означает, что если у вас есть библиотека stati c, которая использует компоненты пространства имен C ++ std из PlatformToolset
v140 / v141, он успешно свяжется с более поздней версией Visual C ++ до v142. Не ясно, будет ли это в будущем, но это верно для этого конкретного набора выпусков для Документов Microsoft .
* VCRUNTIME*.DLL
должен соответствовать версии Visual C ++ компилятор, который вы используете для создания окончательной ссылки, поэтому он очень подходит для вашего PlatformToolset
.