Содержание
- Обновление кода для универсальной среды выполнения Upgrade your code to the Universal CRT
- Где найти файлы универсальной среды выполнения Where to find the Universal CRT files
- Развертывание и распространение универсальной среды выполнения Deployment and redistribution of the Universal CRT
- Изменения функций и макросов универсальной среды выполнения Changes to the Universal CRT functions and macros
- Name already in use
- cpp-docs / docs / c-runtime-library / crt-library-features.md
- Microsoft office requires the Universal CRT(KB2999226)which failed to install|Error code (2999226)

All supported x64-based versions of Windows 7
Обновление кода для универсальной среды выполнения Upgrade your code to the Universal CRT
В Visual Studio 2015 был выполнен рефакторинг библиотеки времени выполнения Майкрософт C (CRT). In Visual Studio 2015, the Microsoft C Runtime Library (CRT) was refactored. Расширения стандартной библиотеки C, POSIX и соответствующие для Майкрософт функции были перемещены в новейшую библиотеку — библиотеку универсальной среды C (универсальной CRT либо UCRT). The Standard C Library, POSIX extensions and Microsoft-specific functions, macros, and global variables were moved into a new library, the Universal C Runtime Library (Universal CRT or UCRT). Составляющие компилятора были перемещены в новейшую библиотеку vcruntime. The compiler-specific components of the CRT were moved into a new vcruntime library.
UCRT сейчас является компонентом Windows и поставляется в составе Windows 10. The UCRT is now a Windows component, and ships as part of Windows 10. UCRT поддерживает постоянные соглашения о вызовах ABI на базе C и поболее точно соответствует эталону ISO C99 с несколькими исключениями. The UCRT supports a stable ABI based on C calling conventions, and it conforms closely to the ISO C99 standard, with only a few exceptions. UCRT больше не привязана к определенной версии компилятора. It is no longer tied to a specific version of the compiler. UCRT можно использовать в хоть какой версии Windows, поддерживаемой Visual Studio 2015 либо Visual Studio 2017. You can use the UCRT on any version of Windows supported by Visual Studio 2015 or Visual Studio 2017. Преимущество в том, что больше не требуется обновлять сборки для соответствия новейшей версии CRT при каждом обновлении Visual Studio. The benefit is that you no longer need to update your builds to target a new version of the CRT with every upgrade of Visual Studio.
После такового рефакторинга поменялись имена либо расположения многих файлов заголовков CRT, файлов библиотек и распространяемых компонент, также способы развертывания, нужные для кода. With this refactoring, the names or locations of many CRT header files, library files, and redistributables, and the deployment methods required for your code have changed. Не считая того, в UCRT были добавлены либо изменены многие функции и макросы в целях улучшения соответствия эталонам. In addition, many functions and macros in the UCRT were added or changed to improve standards conformance. Чтоб отлично использовать эти конфигурации, нужно обновить имеющийся код и системы сборки проекта. To take advantage of these changes, your existing code and project build systems must be updated.
Где найти файлы универсальной среды выполнения Where to find the Universal CRT files
Потому что UCRT является компонентом Windows, файлы и заглавия библиотеки UCRT сейчас входят в состав пакета SDK Windows. As a Windows component, the UCRT library files and headers are now part of the Windows software development kit (SDK). При установке Visual Studio также инсталлируются составляющие пакета SDK Windows, нужные для использования UCRT. When you install Visual Studio, the parts of the Windows SDK required to use the UCRT are also installed. Установщик Visual Studio добавляет расположения файлов заголовков и библиотек и DLL-файлов в пути по дефлоту, применяемые в системе сборки проектов Visual Studio. The Visual Studio installer adds the locations of the UCRT headers, libraries and DLL files to the default paths used by the Visual Studio project build system. Если при обновлении проекты Visual Studio C++ употребляют характеристики по дефлоту, встроенная среда разработки автоматом увидит новые расположения для файлов заголовков, а компоновщик автоматом будет использовать новые данные по дефлоту библиотеки UCRT и vcruntime. When you update your Visual Studio C++ projects, if they use the default project settings, the IDE automatically finds the new locations for header files, and the linker automatically uses the new default UCRT and vcruntime libraries. Аналогичным образом при использовании командной строчки разработчика для построений из командной строчки переменные среды, содержащие пути для заголовков и библиотек, будут автоматом обновлены и готовы к работе. Similarly, if you use a Developer command prompt to do command-line builds, the environment variables that contain paths for headers and libraries are updated and work automatically as well.
Читайте также: Zip windows media player
Сейчас файлы заголовков стандартной библиотеки C находятся в пакете SDK Windows SDK в папке include в каталоге версии пакета SDK. The Standard C Library header files are now found in the Windows SDK in an include folder in an SDK version-specific directory. Обычное размещение файлов заголовков находится в каталоге Program Files либо Program Files (x86) в наборах Windows \ 10 с \ \ пакетом SDK-Version \ ucrt, где SDK-Version соответствует версии либо обновлении Windows, к примеру 10.0.14393.0 для годовщины обновления Windows 10. A typical location for the header files is in the Program Files or Program Files (x86) directory under Windows Kits\10\Include\sdk-version\ucrt, where sdk-version corresponds to a Windows version or update, for example, 10.0.14393.0 for the Anniversary Update of Windows 10.
Статические библиотеки UCRT и библиотеки заглушек динамической сборки находятся в каталоге Program Files либо Program Files (x86) в наборе Windows \ 10 \ lib \ SDK-Version \ UCRT \ , где архитектура — ARM, x86 либо x64. The UCRT static libraries and dynamic link stub libraries are found in the Program Files or Program Files (x86) directory under Windows Kits\10\Lib\sdk-version\ucrt\architecture, where architecture is ARM, x86, or X64. Статические библиотеки отладочных и розничных версий — это libucrt.lib и libucrtd.lib, а библиотеки для DLL UCRT — ucrt.lib и ucrtd.lib. The retail and debug static libraries are libucrt.lib and libucrtd.lib, and the libraries for the UCRT DLLs are ucrt.lib and ucrtd.lib.
Отладочные и розничные версии библиотек DLL среды UCRT находятся в различных местах. The retail and debug UCRT DLLs are found in separate locations. Розничные библиотеки DLL являются распространяемыми, и их можно отыскать в каталоге Program Files либо Program Files (x86) в комплектах Windows \ 10 \ Redist \ ucrt \ DLL \ .. The retail DLLs are redistributable, and can be found in the Program Files or Program Files (x86) directory under Windows Kits\10\Redist\ucrt\DLLs\architecture. Отладочные библиотеки UCRT не являются распространяемыми, и их можно отыскать в каталоге Program Files либо Program Files (x86) в разделе Наборы Windows \ 10 \ bin \ архитектура \ UCRT. Debug UCRT libraries are not redistributable, and can be found in the Program Files or Program Files (x86) directory under Windows Kits\10\bin\architecture\ucrt folder.
Библиотека поддержки времени выполнения для компилятора C и C++, vcruntime, содержит код, нужный для поддержки пуска программки и функций, таких как обработка исключений и интегрированные функции. The C and C++ compiler-specific runtime support library, vcruntime, contains the code required to support program startup and features such as exception handling and intrinsics. Библиотеки и ее файлы заголовков как и раньше находятся в папке определенной версии Microsoft Visual Studio в каталоге Program Files либо Program Files (x86). The library and its header files are still found in the version-specific Microsoft Visual Studio folder in your Program Files or Program files (x86) directory. В Visual Studio 2017 заглавия находятся в разделе Microsoft Visual Studio \ 2017 \ выпусков \ VC \ Tools \ компилятором MSVC \ lib-version, \ а библиотеки ссылок находятся в разделе Microsoft Visual Studio \ 2017 \ Edition \ VC \ Tools \ компилятором MSVC Library \ -Version \ lib \ , где Edition — это версия установленных Visual Studio, lib-Version является версией библиотек, а архитектура — архитектурой микропроцессора. In Visual Studio 2017, the headers are found under Microsoft Visual Studio\2017\edition\VC\Tools\MSVC\lib-version\include and the link libraries are found under Microsoft Visual Studio\2017\edition\VC\Tools\MSVC\lib-version\lib\architecture, where edition is the edition of Visual Studio installed, lib-version is the version of the libraries, and architecture is the processor architecture. Библиотеки сборки для OneCore и Магазина также находятся в папке библиотек. Link libraries for OneCore and Store are also found in the libraries folder. Версия выпуска и отладочная версия статической библиотеки — это libvcruntime.lib и libvcruntimed.lib. The retail and debug versions of the static library are libvcruntime.lib and libvcruntimed.lib. Версия выпуска библиотеки динамической сборки и отладочная версия библиотеки заглушки — это vcruntime.lib и vcruntimed.lib, соответственно. The dynamic link retail and debug stub libraries are vcruntime.lib and vcruntimed.lib, respectively.
Читайте также: Windows 10 планшет сенсорная клавиатура
Если при обновлении проектов Visual Studio C++ вы установили для характеристики Игнорировать все стандартные библиотеки****компоновщика в проекте значение Да либо используете параметр компоновщика /NODEFAULTLIB в командной строке, нужно обновить перечень библиотек, чтоб включить в него новые подвергнутые рефакторингу библиотеки. When you update your Visual Studio C++ projects, if you have set the project’s Linker property Ignore All Default Libraries to Yes or if you use the /NODEFAULTLIB linker option on the command line, then you must update your list of libraries to include the new, refactored libraries. Поменяйте старенькую библиотеку CRT, к примеру libcmt.lib, libcmtd.lib, msvcrt.lib, msvcrtd.lib, эквивалентными подвергнутыми рефакторингу библиотеками. Replace the old CRT library, for example, libcmt.lib, libcmtd.lib, msvcrt.lib, or msvcrtd.lib, with the equivalent refactored libraries. Сведения о определенных библиотеках см. в разделе Особенности библиотеки CRT. For information on the specific libraries to use, see CRT Library Features.
Развертывание и распространение универсальной среды выполнения Deployment and redistribution of the Universal CRT
Так как UCRT сейчас является компонентом операционной системы Microsoft Windows, она заходит в состав операционной системы Windows 10 и доступна через Центр обновления Windows для старенькых операционных систем от Windows Vista до Windows 8.1. Because the UCRT is now a Microsoft Windows operating system component, it is included as part of the operating system in Windows 10 and is available through Windows Update for older operating systems, Windows Vista through Windows 8.1. Распространяемая версия доступна для Windows XP. A redistributable version is available for Windows XP. Как компонент операционной системы управление обновлениями и обслуживанием UCRT осуществляется при помощи Центра обновления Windows независимо от версий Visual Studio и компилятора Microsoft C++. As an operating system component, UCRT updates and servicing are managed by Windows Update independently of Visual Studio and Microsoft C++ compiler versions. Так как UCRT является компонентом Windows, в связи с маленьким размером вида и в целях обеспечения безопасности и простоты внедрения обновлений безотступно рекомендуется делать централизованное развертывание UCRT для приложений. Because the UCRT is a Windows component, for security and ease of updates, and a smaller image size, we strongly recommend central deployment of the UCRT for your app.
Читайте также: Разметка диска средствами windows
UCRT можно использовать в хоть какой версии Windows, поддерживаемой Visual Studio 2015 либо Visual Studio 2017. You can use the UCRT on any version of Windows supported by Visual Studio 2015 or Visual Studio 2017. Ее можно распространять при помощи пакета vcredist для поддерживаемых версий Windows (не считая Windows 10). You can redistribute it using a vcredist package for supported versions of Windows other than Windows 10. Пакеты vcredist содержат в себе составляющие UCRT и автоматом устанавливают их в операционных системах Windows, где они не установлены по дефлоту. The vcredist packages include the UCRT components and automatically install them on Windows operating systems that do not have them installed by default. Дополнительные сведения см. в разделе Распространение файлов Visual C++. For more information, see Redistributing Visual C++ Files.
Поддерживается развертывание локальных приложений UCRT, хотя этот вариант является нерекомендуемым по суждениям безопасности и производительности. App-local deployment of the UCRT is supported, though not recommended for both performance and security reasons. Библиотеки DLL для развертывания локальных приложений входят в состав пакета SDK Windows и находятся в подкаталоге redist. The DLLs for app-local deployment are included as part of the Windows SDK, under the redist subdirectory. Требуемые библиотеки DLL содержат ucrtbase.dll и набор библиотек DLL переадресации APISet с именованием api-ms-win-subset.dll. The DLLs required include ucrtbase.dll and a set of APISet forwarder DLLs named api-ms-win-subset.dll. Для каждой операционной системы требуется различный набор библиотек DLL, потому при развертывании локальных приложений рекомендуется включать все библиотеки DLL. The set of DLLs required on each operating system varies, so we recommended that you include all of the DLLs when you use app-local deployment. Дополнительные сведения и советы об использовании развертываний локальных приложений см. в разделе Развертывание в Visual C++. For additional details and caveats about app-local deployment, see Deployment in Visual C++.
Изменения функций и макросов универсальной среды выполнения Changes to the Universal CRT functions and macros
Многие функции были добавлены либо обновлены в UCRT для увеличения соответствия эталону ISO C99, также для устранения заморочек, связанных с качеством и безопасностью кода. Many functions were added or updated in the UCRT to improve ISO C99 conformance, and to address code quality and security issues. В неких случаях требовалось внести критичные конфигурации в библиотеку. In some cases, this required breaking changes to the library. Если код компилируется верно при использовании более ранешней версии CRT, но прерывается при компиляции с внедрением UCRT, нужно поменять код, чтоб пользоваться преимуществами этих обновлений и функций. If your code compiled cleanly when using an older version of the CRT but breaks when compiled using the UCRT, you must change your code to take advantage of these updates and features. Подробный перечень критичных конфигураций и обновлений для универсальной среды выполнения в разделе Библиотека времени выполнения C (CRT) в журнальчике конфигураций Visual C++. For a detailed listing of the breaking changes and updates to the CRT found in the Universal CRT, see the C Runtime Library (CRT) section of the Visual C++ change history. В него заходит список затронутых заголовков и функции, который можно использовать для определения конфигураций, нужных для кода. It includes a list of affected headers and functions that you can use to identify the changes needed in your code.
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Cancel Create
cpp-docs / docs / c-runtime-library / crt-library-features.md
- Go to file T
- Go to line L
- Copy path
- Copy permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Microsoft office requires the Universal CRT(KB2999226)which failed to install|Error code (2999226)
Cannot retrieve contributors at this time
111 lines (75 sloc) 13.7 KB
- Open with Desktop
- View raw
- Copy raw contents Copy raw contents Copy raw contents
Copy raw contents
C runtime (CRT) and C++ standard library (STL) lib files
List of Microsoft C runtime and C++ standard library (STL) lib files that you can link against and their associated compiler options and preprocessor directives.
contperf-fy21q3
MSVCR71.dll
libraries [C++], multithreaded
library files, run-time
LIBCPMT.lib
run-time libraries, C
CRT, release versions
MSVCP71.dll
libraries [C++]
libraries [C++], run-time
linking [C++], libraries
STL libraries
Microsoft standard template libraries
C runtime (CRT) and C++ standard library (STL) .lib files
This article lists the Microsoft C runtime library .lib files that you can link against when you develop your application, and their associated compiler options and preprocessor directives.
See Redistributing Visual C++ files if you’re looking for information about deploying the C runtime files necessary to support your application.
See C runtime library reference if you’re looking for API reference for the C runtime library.
[!NOTE] Microsoft’s implementation of the C++ standard library is often referred to as the STL or Standard Template Library. Although C++ standard library is the official name of the library as defined in ISO 14882, due to the popular use of «STL» and «Standard Template Library» in search engines, we occasionally use those names to make it easier to find our documentation.
From a historical perspective, «STL» originally referred to the Standard Template Library written by Alexander Stepanov. Parts of that library were standardized in the C++ standard library. The standard library also incorporates the ISO C runtime library, parts of the Boost library, and other functionality. Sometimes «STL» is used to refer to the containers and algorithms parts of the C++ standard library adapted from Stepanov’s STL. In this documentation, Standard Template Library (STL) refers to the C++ standard library as a whole.
C runtime .lib files
The ISO C standard library is part of the C++ standard library. The Visual C++ libraries that implement the CRT support native code development, and both mixed native and managed code. All versions of the CRT support multi-threaded development. Most of the libraries support both static linking, to link the library directly into your code, or dynamic linking to let your code use common DLL files.

In Visual Studio 2015, the CRT was refactored into new binaries. The Universal CRT (UCRT) contains the functions and globals exported by the standard C99 CRT library. The UCRT is now a Windows component, and ships as part of Windows 10 and later versions. The static library, DLL import library, and header files for the UCRT are now found in the Windows SDK. When you install Visual C++, Visual Studio setup installs the subset of the Windows SDK required to use the UCRT. You can use the UCRT on any version of Windows supported by Visual Studio 2015 and later versions. You can redistribute it using vcredist for supported versions of Windows other than Windows 10 or later. For more information, see Redistributing Visual C++ Files.
The following table lists the libraries that implement the UCRT.
| Library | Associated DLL | Characteristics | Option | Preprocessor directives |
|---|---|---|---|---|
| libucrt.lib | None | Statically links the UCRT into your code. | /MT | _MT |
| libucrtd.lib | None | Debug version of the UCRT for static linking. Not redistributable. | /MTd | _DEBUG , _MT |
| ucrt.lib | ucrtbase.dll | DLL import library for the UCRT. | /MD | _MT , _DLL |
| ucrtd.lib | ucrtbased.dll | DLL import library for the Debug version of the UCRT. Not redistributable. | /MDd | _DEBUG , _MT , _DLL |
The vcruntime library contains Visual C++ CRT implementation-specific code: exception handling and debugging support, runtime checks and type information, implementation details, and certain extended library functions. The vcruntime library version needs to match the version of the compiler you’re using.
This table lists the libraries that implement the vcruntime library.
| Library | Associated DLL | Characteristics | Option | Preprocessor directives |
|---|---|---|---|---|
| libvcruntime.lib | None | Statically linked into your code. | /MT | _MT |
| libvcruntimed.lib | None | Debug version for static linking. Not redistributable. | /MTd | _MT , _DEBUG |
| vcruntime.lib | vcruntime.dll | DLL import library for the vcruntime. | /MD | _MT , _DLL |
| vcruntimed.lib | vcruntimed.dll | DLL import library for the Debug vcruntime. Not redistributable. | /MDd | _DEBUG , _MT , _DLL |
[!NOTE] When the UCRT was refactored, the Concurrency Runtime functions were moved into concrt140.dll , which was added to the C++ redistributable package. This DLL is required for C++ parallel containers and algorithms such as concurrency::parallel_for . In addition, the C++ standard library requires this DLL on Windows XP to support synchronization primitives, because Windows XP doesn’t have condition variables.
The code that initializes the CRT is in one of several libraries, based on whether the CRT library is statically or dynamically linked, or native, managed, or mixed code. This code handles CRT startup, internal per-thread data initialization, and termination. It’s specific to the version of the compiler used. This library is always statically linked, even when using a dynamically linked UCRT.
This table lists the libraries that implement CRT initialization and termination.
| Library | Characteristics | Option | Preprocessor directives |
|---|---|---|---|
| libcmt.lib | Statically links the native CRT startup into your code. | /MT | _MT |
| libcmtd.lib | Statically links the Debug version of the native CRT startup. Not redistributable. | /MTd | _DEBUG , _MT |
| msvcrt.lib | Static library for the native CRT startup for use with DLL UCRT and vcruntime. | /MD | _MT , _DLL |
| msvcrtd.lib | Static library for the Debug version of the native CRT startup for use with DLL UCRT and vcruntime. Not redistributable. | /MDd | _DEBUG , _MT , _DLL |
| msvcmrt.lib | Static library for the mixed native and managed CRT startup for use with DLL UCRT and vcruntime. | /clr | |
| msvcmrtd.lib | Static library for the Debug version of the mixed native and managed CRT startup for use with DLL UCRT and vcruntime. Not redistributable. | /clr | |
| msvcurt.lib | Deprecated Static library for the pure managed CRT. | /clr:pure | |
| msvcurtd.lib | Deprecated Static library for the Debug version of the pure managed CRT. Not redistributable. | /clr:pure |
If you link your program from the command line without a compiler option that specifies a C runtime library, the linker will use the statically linked CRT libraries: libcmt.lib , libvcruntime.lib , and libucrt.lib .
Using the statically linked CRT implies that any state information saved by the C runtime library will be local to that instance of the CRT. For example, if you use strtok when using a statically linked CRT, the position of the strtok parser is unrelated to the strtok state used in code in the same process (but in a different DLL or EXE) that is linked to another instance of the static CRT. In contrast, the dynamically linked CRT shares state for all code within a process that is dynamically linked to the CRT. This concern doesn’t apply if you use the new more secure versions of these functions; for example, strtok_s doesn’t have this problem.
Because a DLL built by linking to a static CRT has its own CRT state, we don’t recommend you link statically to the CRT in a DLL unless the consequences are understood and desired. For example, if you call _set_se_translator in an executable that loads the DLL linked to its own static CRT, any hardware exceptions generated by the code in the DLL won’t be caught by the translator, but hardware exceptions generated by code in the main executable will be caught.
If you’re using the /clr compiler switch, your code will be linked with a static library, msvcmrt.lib . The static library provides a proxy between your managed code and the native CRT. You can’t use the statically linked CRT ( /MT or /MTd options) with /clr . Use the dynamically linked libraries ( /MD or /MDd ) instead. The pure managed CRT libraries are deprecated in Visual Studio 2015 and unsupported in Visual Studio 2017.
For more information on using the CRT with /clr , see Mixed (Native and Managed) Assemblies.
To build a debug version of your application, the _DEBUG flag must be defined and the application must be linked with a debug version of one of these libraries. For more information about using the debug versions of the library files, see CRT debugging techniques.
This version of the CRT isn’t fully conformant with the C99 standard. In versions before Visual Studio 2019 version 16.8, the header isn’t supported. In all versions, the CX_LIMITED_RANGE and FP_CONTRACT pragma macros aren’t supported. Certain elements such as the meaning of parameter specifiers in standard IO functions use legacy interpretations by default. You can use /Zc compiler conformance options and specify linker options to control some aspects of library conformance.
C++ standard library (STL) .lib files
| C++ standard library | Characteristics | Option | Preprocessor directives |
|---|---|---|---|
| libcpmt.lib | Multithreaded, static link | /MT | _MT |
| msvcprt.lib | Multithreaded, dynamic link (import library for msvcp.dll ) | /MD | _MT , _DLL |
| libcpmtd.lib | Multithreaded, static link | /MTd | _DEBUG , _MT |
| msvcprtd.lib | Multithreaded, dynamic link (import library for msvcpd.dll ) | /MDd | _DEBUG , _MT , _DLL |
When you build a release version of your project, one of the basic C runtime libraries ( libcmt.lib , msvcmrt.lib , msvcrt.lib ) is linked by default, depending on the compiler option you choose (multithreaded, DLL, /clr ). If you include one of the C++ standard library header files in your code, a C++ standard library will be linked automatically by Visual C++ at compile time. For example:
#include ios>
For binary compatibility, more than one DLL file may be specified by a single import library. Version updates may introduce dot libraries, separate DLLs that introduce new library functionality. For example, Visual Studio 2017 version 15.6 introduced msvcp140_1.dll to support more standard library functionality without breaking the Application Binary Interface (ABI) supported by msvcp140.dll . The msvcprt.lib import library included in the toolset for Visual Studio 2017 version 15.6 supports both DLLs, and the vcredist for this version installs both DLLs. Once shipped, a dot library has a fixed ABI, and will never have a dependency on a later dot library.
What problems exist if an application uses more than one CRT version?
Every executable image (EXE or DLL) can have its own statically linked CRT, or can dynamically link to a CRT. The version of the CRT statically included in or dynamically loaded by a particular image depends on the version of the tools and libraries it was built with. A single process may load multiple EXE and DLL images, each with its own CRT. Each of those CRTs may use a different allocator, may have different internal structure layouts, and may use different storage arrangements. It means allocated memory, CRT resources, or classes passed across a DLL boundary can cause problems in memory management, internal static usage, or layout interpretation. For example, if a class is allocated in one DLL but passed to and deleted by another, which CRT deallocator is used? The errors caused can range from the subtle to the immediately fatal, and therefore direct transfer of such resources is discouraged.
You can avoid many of these issues by using Application Binary Interface (ABI) technologies instead, as they’re designed to be stable and versionable. Design your DLL export interfaces to pass information by value, or to work on memory that is passed in by the caller rather than allocated locally and returned to the caller. Use marshaling techniques to copy structured data between executable images. Encapsulate resources locally and only allow manipulation through handles or functions you expose to clients.
It’s also possible to avoid some of these issues if all of the images in your process use the same dynamically loaded version of the CRT. To ensure that all components use the same DLL version of the CRT, build them by using the /MD option, and use the same compiler toolset and property settings.
Be careful if your program passes certain CRT resources across DLL boundaries. Resources such as file handles, locales, and environment variables can cause problems, even when using the same version of the CRT. For more information on the issues involved and how to resolve them, see Potential errors passing CRT objects across DLL boundaries.
Похожие статьи
-
Содержание Name already in use cpp-docs / docs / windows / universal-crt-deployment.md Установка компонент Microsoft Windows Universal CRT(KB2999226) и…