Что представляют собой файлы msvcp140_1.dll и msvcp140_2.dll в среде выполнения Microsoft C? - PullRequest
0 голосов
/ 25 мая 2020

Я пытаюсь импортировать библиотеку C в проект Visual Studio. Библиотека поставляется со следующими файлами:

msvcp140.dll
msvcp140_1.dll
msvcp140_2.dll

Я понимаю, что это файлы DLL среды выполнения Microsoft C. Но я хотел бы больше узнать о назначении этих файлов. Я хотел бы знать, какие двоичные файлы мне нужны и каковы последствия их включения.

Какова цель файлов msvcp140_1.dll и msvcp140_2.dll?

1 Ответ

3 голосов
/ 25 мая 2020

Эти файлы на самом деле являются реализацией стандартной библиотеки C ++ (см. p в их имени). Из раздела C++ Standard Library на Функции библиотеки CRT | Microsoft Docs :

При сборке окончательной версии проекта одна из базовых c C библиотек времени выполнения (libcmt.lib, msvcmrt.lib, msvcrt. lib) связан по умолчанию, в зависимости от выбранного вами варианта компилятора (многопоточный, DLL, / clr). Если вы включите один из файлов заголовков стандартной библиотеки C ++ в код, стандартная библиотека C ++ будет автоматически связана с Visual C ++ во время компиляции. Например:

#include <ios>

Для двоичной совместимости в одной библиотеке импорта может быть указано несколько файлов DLL. Обновления версий могут включать точечные библиотеки, отдельные библиотеки DLL, которые вводят новые функции библиотеки. Например, Visual Studio 2017 версии 15.6 представила msvcp140_1.dll для поддержки дополнительных функций стандартной библиотеки без нарушения ABI, поддерживаемого msvcp140.dll. Библиотека импорта msvcprt.lib, включенная в набор инструментов для Visual Studio 2017 версии 15.6, поддерживает обе библиотеки DLL, а vcredist для этой версии устанавливает обе библиотеки DLL. После поставки библиотека точек имеет фиксированный ABI и никогда не будет зависеть от более поздних библиотек точек. например, stl/CMakeLists.txt даже описывает файлы:

# msvcp140_1.dll (the memory_resource satellite)

и

# msvcp140_2.dll (the special math satellite)

Однако имена исходных файлов уже описательны на свои.

...