Microsoft visual c++

Основные понятияConcepts

Среда выполнения Windows библиотека шаблонов C++ предоставляет типы, представляющие несколько основных понятий.Windows Runtime C++ Template Library provides types that represent a few basic concepts. Эти типы описаны в следующих разделах.The following sections describe those types.

ComPtrComPtr

тип ComPtr — тип интеллектуального указателя , который представляет интерфейс, определяемый параметром шаблона.ComPtr is a smart pointer type that represents the interface that’s specified by the template parameter. Тип используется для объявления переменной, которая может получить доступ к членам объекта, производного от интерфейса.Use to declare a variable that can access the members of an object that’s derived from the interface. автоматически поддерживает счетчик ссылок для указателя базового интерфейса и освобождает интерфейс, когда счетчик ссылок становится равен нулю. automatically maintains a reference count for the underlying interface pointer and releases the interface when the reference count goes to zero.

RuntimeClassRuntimeClass

RuntimeClass представляет собой экземпляр класса, который наследуется от набора указанных интерфейсов.RuntimeClass represents an instantiated class that inherits a set of specified interfaces. Объект может предоставить сочетание поддержки для одного или нескольких среда выполнения Windows COM-интерфейсов или слабой ссылки на компонент.A object can provide a combination of support for one or more Windows Runtime COM interfaces, or a weak reference to a component.

МодульModule

Module представляет коллекцию связанных объектов.Module represents a collection of related objects. Объект управляет фабриками класса, создающими объекты, и регистрацией, которая позволяет другим приложениям использовать объект.A object manages class factories, which create objects, and registration, which enables other applications to use an object.

Обратный вызовCallback

Функция Callback создает объект, функция-член которого является обработчиком событий (метод обратного вызова).The Callback function creates an object whose member function is an event handler (a callback method). Функция используется для записи асинхронных операций.Use the function to write asynchronous operations.

EventSourceEventSource

EventSource используется для управления обработчиками событий делегатов .EventSource is used to manage delegate event handlers. Используйте среда выполнения Windows библиотеку шаблонов C++, чтобы реализовать делегат и использовать для добавления, удаления и вызова делегатов.Use Windows Runtime C++ Template Library to implement a delegate, and use to add, remove, and invoke delegates.

AsyncBaseAsyncBase

Метод asyncbase предоставляет виртуальные методы, представляющие модель асинхронного программирования среда выполнения Windows.AsyncBase provides virtual methods that represent the Windows Runtime asynchronous programming model. Переопределите члены этого класса для создания пользовательского класса, который может запускать и останавливать асинхронную операцию, а также проверять ход ее выполнения.Override the members in this class to create a custom class that can start, stop, or check the progress of an asynchronous operation.

FtmBaseFtmBase

FtmBase представляет объект маршаллера в режиме свободного потока.FtmBase represents a free-threaded marshaler object. создает общую таблицу интерфейса (GIT) и помогает управлять маршалингом и прокси-объектами. creates a global interface table (GIT), and helps manage marshaling and proxy objects.

WeakRefWeakRef

WeakRef — тип интеллектуального указателя, представляющий слабую ссылку на объект, который может быть доступен или недоступен.WeakRef is a smart-pointer type that represents a weak reference, which references an object that might or might not be accessible. Объект может использоваться только среда выполнения Windows, а не классической моделью COM.A object can be used by only the Windows Runtime, and not by classic COM.

Объект обычно представляет объект, наличием которого управляет внешний поток или приложение.A object typically represents an object whose existence is controlled by an external thread or application. Например, объект может ссылаться на объект файла.For example, a object can reference a file object. При открывании файла является допустимым и файл, на который он ссылается, доступен.When the file is open, the is valid and the referenced file is accessible. Однако после закрытия файла перестает быть допустимым и файл становится недоступным.But when the file is closed, the is invalid and the file is not accessible.

Question 2: What is difference between CRT and Standard C++ library? What libraries will Runtime library compiler options include

Visual C++ include the following libraries in addition to the Microsoft Foundation Classes (MFC) libraries:

  • Basic C-Runtime library
  • Standard C++ library
Library types and related compiler switches Basic C Runtime library / Standard C++ library
Single-threaded (/ML) LIBC.LIB / LIBCP.LIB
Debug Single-threaded (/MLd) LIBCD.LIB / LIBCPD.LIB
Multithreaded (/MT) LIBCMT.LIB / LIBCPMT.LIB
Debug Multithreaded (/MTd) LIBCMTD.LIB / LIBCPMTD.LIB
Multithreaded DLL (/MD) MSVCRT.LIB / MSVCPRT.LIB
Debug Multithreaded /DLL (MDd) MSVCRTD.LIB / MSVCPRTD.LIB

Note

  • The /ML and /MLd library compiler options for statically single-threaded libraries have been removed in Visual C++.
  • MSVCPRT.lib and MSVCPRTD.lib are static libraries and don’t have any dynamic link libraries (DLLs) directly related to them. These libraries are also dependent on MSVCRT.lib and MSVCRTD.lib, respectively. If you have any applications that use MSVCPRT.lib or MSVCPRTD.lib and you use the Ignore Default Library (/NOD or NODEFAULTLIB) option, be sure to link MSVCPRT.lib (or MSVCPRTD.lib) and MSVCRT.lib (or MSVCRTD.lib) with your application. Otherwise, you will get linker errors (LNK2001: unresolved externals in MSVCPRT.lib or MSVCPRTD.lib) when linking your application. Depending on the headers you use in your code, a library from the Standard C++ library may also be linked.

The header file use_ansi.h contains statements that force the Standard C++ library to be linked in. All Standard C++ headers include use_ansi.h: if you include any Standard C++ header in your application, the Standard C++ library will be linked by default.

Standard C++ headers

Column 1 Column 2 Column 3 Column 4
ALGORITHM BITSET COMPLEX DEQUE
EXCEPTION FSTREAM FUNCTIONAL IOMANIP
IOS IOSFWD IOSTREAM ISTREAM
ITERATOR LIMITS LIST LOCALE
MAP MEMORY NUMERIC OSTREAM
QUEUE SET SSTREAM STACK
STDEXCEPT STREAMBUF STRING STRSTREAM
TYPEINFO UTILITY VALARRAY VECTOR

Загрузка и установка Visual C++

Самым простым и правильным способом будет переустановка Microsoft Visual C++. Но перед этим вам обязательно нужно удалить компоненты, которые уже установлены на компьютере. Иначе вы рискуете снова столкнуться с той же самой неполадкой.

Итак, сначала воспользуйтесь штатной утилитой «Программы и компоненты». В списке установленных приложений отыщите все версии Visual C++ и поочередно удалите их. Эту процедуру нужно сделать со всеми компонентами без исключений по версиям и разрядности.

После деинсталляции всех компонентов обязательно перезагрузите компьютер. Дополнительно можно выполнить очистку реестра и временных файлов.

Теперь можно переходить к повторной установке библиотек. Обязательно скачивайте дистрибутив с официального сайта Microsoft. Чтобы вы не искали нужную страницу вручную, просто откройте данную ссылку и загрузите установщик. При выборе подходящего инсталлятора ориентируйтесь на название файла. Vc_redist.x86.exe нужно скачивать при использовании Windows 32-bit, а файл с названием vc_redist.x64.exe, соответственно, для 64-битных операционных систем.

Теперь необходимо запустить инсталлятор и следовать инструкции. От вас требуется лишь согласие с лицензией и нажатие одной кнопки «Установить». Далее, утилита выполнит все необходимые действия автоматически. Вам останется только перезагрузить компьютер и проверить, исчезла ли ошибка Runtime Error при запуске того или иного приложения.

Ошибка из-за некорректного имени учетной записи

С помощью этого метода ошибка исправляется просто и быстро. Причина в этом случае кроется в имени учетной записи. Если она на кириллице (русский язык), возникает ошибка такого рода. Нужно просто создать дополнительную запись на латинице (английский). Для этого:

  • «Панель управления».
  • «Учетные записи и Семейная безопасность».
  • «Учетные записи пользователей».
  • «Управление другой учетной записью».
  • В новой вкладке окна добавляем нового пользователя с именем на английском языке.
  • Перейти в новую учетную запись.
  • Запустить приложение.

Иногда помогает переименовать каталог с кириллицы на латынь. Например с C:\Игры на C:\Games

Question 8: Why I get message (LNK2001: unresolved external symbol ‘symbol’;) on iostream function calls when the project is built with Ignore Default Libraries

The functions have been removed from the C-Runtime library.

If you’re using the old functions, you must add an additional library LIBCI.lib (single-threaded ML), LIBCIMT.lib (multithreaded MT), or MSVCIRT.lib (multithreaded dll MD). These libraries have been removed from Visual C++.

If you’re using the new functions included with the Standard C++ library, you must add an additional library LIBCP.lib (single-threaded ML), LIBCPMT.lib (multithreaded MT), or MSVCPRT.lib (multithreaded dll MD).

Don’t mix different versions of the libraries. For example, if you’re using the single-threaded version of the C-Runtime library, you must also use the single-threaded version of the old library or Standard C++ library.

You can’t mix calls to the old library functions and the new Standard C++ library functions.

Default DLL entry point _DllMainCRTStartup

In Windows, all DLLs can contain an optional entry-point function, usually called , that is called for both initialization and termination. This gives you an opportunity to allocate or release additional resources as needed. Windows calls the entry-point function in four situations: process attach, process detach, thread attach, and thread detach. When a DLL is loaded into a process address space, either when an application that uses it is loaded, or when the application requests the DLL at runtime, the operating system creates a separate copy of the DLL data. This is called process attach. Thread attach occurs when the process the DLL is loaded in creates a new thread. Thread detach occurs when the thread terminates, and process detach is when the DLL is no longer required and is released by an application. The operating system makes a separate call to the DLL entry point for each of these events, passing a reason argument for each event type. For example, the OS sends as the reason argument to signal process attach.

The VCRuntime library provides an entry-point function called to handle default initialization and termination operations. On process attach, the function sets up buffer security checks, initializes the CRT and other libraries, initializes run-time type information, initializes and calls constructors for static and non-local data, initializes thread-local storage, increments an internal static counter for each attach, and then calls a user- or library-supplied . On process detach, the function goes through these steps in reverse. It calls , decrements the internal counter, calls destructors, calls CRT termination functions and registered functions, and notifies any other libraries of termination. When the attachment counter goes to zero, the function returns to indicate to Windows that the DLL can be unloaded. The function is also called during thread attach and thread detach. In these cases, the VCRuntime code does no additional initialization or termination on its own, and just calls to pass the message along. If returns from process attach, signaling failure, calls again and passes as the reason argument, then goes through the rest of the termination process.

When building DLLs in Visual Studio, the default entry point supplied by VCRuntime is linked in automatically. You do not need to specify an entry-point function for your DLL by using the /ENTRY (Entry point symbol) linker option.

Note

While it is possible to specify another entry-point function for a DLL by using the /ENTRY: linker option, we do not recommend it, because your entry-point function would have to duplicate everything that does, in the same order. The VCRuntime provides functions that allow you to duplicate its behavior. For example, you can call __security_init_cookie immediately on process attach to support the /GS (Buffer security check) buffer checking option. You can call the function, passing the same parameters as the entry point function, to perform the rest of the DLL initialization or termination functions.

Question 7: Why I get error (compiler error C2371: ‘identifier’ redefinition; different basic types)

In versions of Visual C++ that are earlier than Visual C++ 2005, mixing Standard C++ headers and old headers causes this error, even if they’re included in different source files. The following are the different headers:

  • Old headers:

    Column 1 Column 2
    FSTREAM.H IOMANIP.H
    IOS.H IOSTREAM.H
    ISTREAM.H OSTREAM.H
    STDIOSTR.H STREAMB.H
    STRSTREA.H
  • Standard C++ headers:

    Column 1 Column 2 Column 3 Column 4
    ALGORITHM BITSET COMPLEX DEQUE
    EXCEPTION FSTREAM FUNCTIONAL IOMANIP
    IOS IOSFWD IOSTREAM ISTREAM
    ITERATOR LIMITS LIST LOCALE
    MAP MEMORY NUMERIC OSTREAM
    QUEUE SET SSTREAM STACK
    STDEXCEPT STREAMBUF STRING STRSTREAM
    TYPEINFO UTILITY VALARRAY VECTOR

Исправление ошибки Runtime Error

Мы вывели все основные источники проблемы, и постарались дать краткое описание по их решению. Начнем с самого простого.

Проверка соответствий

Microsoft Visual C++  — основная база для написания игр и приложений. Первым действием пользователя может стать лишь проверка и установка обновлений. Официальный пакет можно скачать с сайта компании, он распространяется бесплатно.

Строит непременно обратить внимание на свойства ОС — скачать нужно свою битную версию x86-64.
Мощные ПК могут скачать последние пакеты Studio 2015.

Runtime Error» title=»Исправление ошибки Runtime Error» width=»567″ height=»309″ /> Обновите свой пакет Microsoft Visual C++ на компьютере

Вирусы

Антивирус не может гарантировать защиту со 100% гарантией. Проверка всех дисков на наличие вирусов не будет лишней. Именно глубокое сканирование следует провести несколькими программами по удалению вредоносного ПО. Вспомогательные онлайн ресурсы тут тоже могут пригодиться, чтобы не производить установку большого количества антивирусов.


Runtime Error фото» title=»Исправление ошибки Runtime Error фото» width=»597″ height=»193″ /> Примените антивирусы с обновленными антивирусными базами

Ошибка во времени

Любая системная программа разрабатывается с расчетом на определенный срок своего действия, после его окончания будет нужна установка обновлений. Отчет времени ведется согласно часам на компьютере. Их сбой может привести к ложному истечению гарантийной работы. Поэтому следует установить правильное местное время.


Устанавливаем автоматическое определение времени и даты

Переустановка софта

Скачивание файлов часто приводит к потере нескольких важных элементов, без которых нормальное функционирование невозможно.

  1. Переустановите скачанную игру или программу заново.
  2. Найдите другой источник с похожим файлом и загрузите его оттуда.
  3. Произведите вручную поиск недостающих элементов.

Конфликты с DirectX

DirectX 10-той версии очень часто становиться причиной возникновения конфликта. Это возникает из-за его нагрузки на ОС. Некоторые Windows XP просто не справляются с полученным объемом информации.

  • Решением может стать обновление DirectX . Лучше это сделать произвести с помощью установщика от Microsof.
  • Можно самостоятельно найти более легкий аналог нежели DirectX 10, 11 и установить его.

NET Framework и его наличие

NET Framework может быть не установлен на вашем компьютере. Следует скачать актуальную версию под вашу операционную систему. Без данного элемента о работе игр и речи быть не может.

Видеокарта

Видеокарты и их драйвера всегда становятся проблемами при многих изменениях на ПК. Нужно проверить, нет ли тут конфликтов.

  1. Посетите сайт разработчика своей видеокарты. Проверьте наличие последних обновлений.
  2. Перед установкой произведите полное стирание предыдущих драйверов.
  3. Попробуйте снова включить проблемный софт.


Проверяем драйвера видеокарты

Очистка реестра

Windows реестр очень важен для сохранения многих полезных функций, которые используются пользователей при каждом запуске компьютера. Иногда сохраненных данных становиться слишком много. Они начинают в хаотичном порядке выдавать разные ошибки. Пути, по которым раньше все работало, отныне становятся заблокированными.

  1. Очистите реестр специальными утилитами.
  2. Произведите перезагрузку системы в конце оптимизации.


Проверяем реестр на наличие ошибок через CCleaner

А вот видео инструкция по работе со сторонним софтом для исправления данного бага. Судя по отзывам — многим помогает.

#1| Как исправить ошибку Microsoft Visual C++ Runtime Library [GTA:MP]#1| Как исправить ошибку Microsoft Visual C++ Runtime Library [GTA:MP]

Исправление ошибки Runtime Error

Помимо полной переустановки ПО, можно воспользоваться другими методами, которые помогут устранить ошибку.

Чистка реестра

Сбои в записях системного реестра могут стать причиной появления ошибки Runtime Error. Для устранения ошибок вам необходимо воспользоваться очищающей утилитой. Например, с поставленной задачей отлично справится программа CCleaner, которую вы можете загрузить по представленной ссылке. Вам нужно открыть вкладку «Реестр» и кликнуть на кнопку «Поиск проблем». После сканирования запустите исправление ошибок.

Переустановка приложения/игры

Следующий вариант связан с полной переустановкой проблемного приложения. Если вы выполнили все предыдущие действия из инструкции, то попробуйте полностью удалить программу/игру. Вы можете деинсталлировать приложение через штатные средства Windows или сделать это с помощью CCleaner, а затем выполнить очистку от временных файлов.

Откат системы

Стоит проверить настройки операционной системы, которые также могут повлиять на работу компонентов Microsoft. Для этого воспользуйтесь процедурой восстановления до контрольной точки:

  1. В поиске введите запрос «восстановление».
  2. Зайдите в соответствующее окно и кликните по кнопке запуска восстановления.
  3. Нажмите кнопку «Далее».
  4. Выберите одну из предложенных контрольных точек.
  5. Запустите процедуру отката.

Запуск от имени администратора и в режиме совместимости

Если игра выпущена давно и не запускается, то рассматриваемая ошибка может свидетельствовать о несовместимости программных комплексов новой версии со старой версией. Поэтому запуск от лица администратора и в режиме совместимости может решить проблему быстро и безболезненно.

Действия:

  1. Правой кнопкой мыши на ярлык с игрой.
  2. Кликнуть на строчку, показанную на скриншоте.
  3. Подтвердить действие.
  4. Дождаться запуска.

Алгоритм:

  1. Правой кнопкой на ярлык приложения.
  2. Клик на строчку «Свойства».
  3. В окне выбрать раздел «Совместимость».
  4. Поставить галочку, как на картинке.
  5. В строке выбора ОС указать вашу текущую версию.
  6. Нажать «Применить» и «ОК».
  7. Запустить приложение.

Concepts

Windows Runtime C++ Template Library provides types that represent a few basic concepts. The following sections describe those types.

ComPtr

ComPtr is a smart pointer type that represents the interface that’s specified by the template parameter. Use to declare a variable that can access the members of an object that’s derived from the interface. automatically maintains a reference count for the underlying interface pointer and releases the interface when the reference count goes to zero.

RuntimeClass

RuntimeClass represents an instantiated class that inherits a set of specified interfaces. A object can provide a combination of support for one or more Windows Runtime COM interfaces, or a weak reference to a component.

Module

Module represents a collection of related objects. A object manages class factories, which create objects, and registration, which enables other applications to use an object.

Callback

The Callback function creates an object whose member function is an event handler (a callback method). Use the function to write asynchronous operations.

EventSource

EventSource is used to manage delegate event handlers. Use Windows Runtime C++ Template Library to implement a delegate, and use to add, remove, and invoke delegates.

AsyncBase

AsyncBase provides virtual methods that represent the Windows Runtime asynchronous programming model. Override the members in this class to create a custom class that can start, stop, or check the progress of an asynchronous operation.

FtmBase

FtmBase represents a free-threaded marshaler object. creates a global interface table (GIT), and helps manage marshaling and proxy objects.

WeakRef

WeakRef is a smart-pointer type that represents a weak reference, which references an object that might or might not be accessible. A object can be used by only the Windows Runtime, and not by classic COM.

A object typically represents an object whose existence is controlled by an external thread or application. For example, a object can reference a file object. When the file is open, the is valid and the referenced file is accessible. But when the file is closed, the is invalid and the file is not accessible.

См. такжеRelated Topics

Ключевые API по категориямKey APIs by CategoryВыделяет основные типы, функции и макросы библиотеки шаблонов C++ среда выполнения Windows.Highlights the primary Windows Runtime C++ Template Library types, functions, and macros.

IsReferenceReferenceСодержит справочные сведения для библиотеки шаблонов среда выполнения Windows C++.Contains reference information for the Windows Runtime C++ Template Library.

Краткий справочник (C++/CX)Quick Reference (C++/CX)Краткое описание функций C++/CX, которые поддерживают среда выполнения Windows.Briefly describes the C++/CX features that support the Windows Runtime.

C++ Standard Library

C++ Standard Library Characteristics Option Preprocessor directives
Multithreaded, static link
Multithreaded, dynamic link (import library for ) ,
Multithreaded, static link ,
Multithreaded, dynamic link (import library for ) , ,

When you build a release version of your project, one of the basic C run-time libraries (, , ) is linked by default, depending on the compiler option you choose (multithreaded, DLL, ). If you include one of the C++ Standard Library header files in your code, a C++ Standard Library will be linked in automatically by Visual C++ at compile time. For example:

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 to support additional standard library functionality without breaking the ABI supported by . The 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.

Question 1: What does Standard C++ library contain

The Standard C++ library provides an extensible framework and contains components for language support, diagnostics, general utilities, strings, locales, standard template library (containers, iterators, algorithms, and numerics), and input/output.

The Standard C++ library can be divided into the following categories:

  1. Standard Template Library (STL) components provide a C++ program with access to a subset of the most widely used algorithms and data structures. STL headers can be grouped into three major organizing concepts:

    • Containers: template classes that support common ways to organize data, such as , , , , , , and .

    • Algorithms: template functions for performing common operations on sequences of objects, such as functional, algorithm, and numeric.

    • Iterators: the glue that pastes algorithms and containers together, such as utility, iterator, and memory.

  2. Input/Output includes components for forward declarations of iostreams (), predefined iostreams objects (), base iostreams classes (), stream buffering (), stream formatting and manipulators (, , ), string streams (), and file streams ().

  3. Other Standard C++ headers include:

    • Language Support: components for common type definitions used throughout the library (), characteristics of the predefined types (, , ), functions supporting start and termination of a C++ program (), support for dynamic memory management (), support for dynamic type identification (), support for exception processing (), and other runtime support (, , , ).

    • Diagnostics: components for reporting several kinds of exceptional conditions (), documenting program assertions (), and a global variable for error number codes ().

    • Strings: components for string classes () and null-terminated sequence utilities (, , ).

    • Localization: components that C++ programs may use to encapsulate cultural differences. The locale facility includes internationalization support for character classification and string collation, numeric, monetary, and date/time formatting and parsing, and message retrieval (, ).

Benefits

The Windows Runtime C++ Template Library enables you to more easily implement and consume Component Object Model (COM) components. It provides housekeeping techniques like reference-counting to manage the lifetime of objects and testing HRESULT values to determine whether an operation succeeded or failed. To successfully use the Windows Runtime C++ Template Library, you must carefully follow these rules and techniques.

The C++/CX is a high-level, language-based way to use Windows Runtime components. Both the Windows Runtime C++ Template Library and C++/CX simplify the writing of code for the Windows Runtime by automatically performing housekeeping tasks on your behalf.

The Windows Runtime C++ Template Library and C++/CX provide different benefits. Here are some reasons you might want to use the Windows Runtime C++ Template Library instead of C++/CX:

  • Windows Runtime C++ Template Library adds little abstraction over the Windows Runtime Application Binary Interface (ABI), giving you the ability to control the underlying code to better create or consume Windows Runtime APIs.

  • C++/CX represents COM HRESULT values as exceptions. If you’ve inherited a code base that uses COM, or one that doesn’t use exceptions, you might find that the Windows Runtime C++ Template Library is a more natural way to work with the Windows Runtime because you don’t have to use exceptions.

    Note

    The Windows Runtime C++ Template Library uses HRESULT values and does not throw exceptions. In addition, the Windows Runtime C++ Template Library uses smart pointers and the RAII pattern to help guarantee that objects are destroyed correctly when your application code throws an exception. For more info about smart pointers and RAII, see Smart Pointers and Objects Own Resources (RAII).

  • The purpose and design of the Windows Runtime C++ Template Library is inspired by the Active Template Library (ATL), which is a set of template-based C++ classes that simplify the programming of COM objects. Because Windows Runtime C++ Template Library uses standard C++ to wrap the Windows Runtime, you can more easily port and interact with many existing COM components written in ATL to the Windows Runtime. If you already know ATL, you might find that Windows Runtime C++ Template Library programming is easier.

Getting Started

Here are some resources that can help you get working with the Windows Runtime C++ Template Library right away.

The Windows Runtime Library (WRL)
In this Channel 9 video, learn more about how the Windows Runtime C++ Template Library helps you write Universal Windows Platform (UWP) apps and how to author and consume Windows Runtime components.

How to: Activate and Use a Windows Runtime Component
Shows how to use the Windows Runtime C++ Template Library to initialize the Windows Runtime and activate and use a Windows Runtime component.

How to: Complete Asynchronous Operations
Shows how to use the Windows Runtime C++ Template Library to start asynchronous operations and perform work when the operations complete.

How to: Handle Events
Shows how to use the Windows Runtime C++ Template Library to subscribe to and handle the events of a Windows Runtime object.

Walkthrough: Creating a UWP app using WRL and Media Foundation
Learn how to create a UWP app that uses Microsoft Media Foundation.

How to: Create a Classic COM Component
Shows how to use the Windows Runtime C++ Template Library to create a basic COM component and a basic way to register and consume the COM component from a desktop app.

How to: Instantiate WRL Components Directly
Learn how to use the Microsoft::WRL::Make and Microsoft::WRL::Details::MakeAndInitialize functions to instantiate a component from the module that defines it.

How to: Use winmdidl.exe and midlrt.exe to create .h files from windows metadata
Shows how to consume custom Windows Runtime components from WRL by creating an IDL file from the .winmd metadata.

Walkthrough: Connecting Using Tasks and XML HTTP Requests
Shows how to use the IXMLHTTPRequest2 and IXMLHTTPRequest2Callback interfaces together with tasks to send HTTP GET and POST requests to a web service in a UWP app.

Bing Maps Trip Optimizer sample
Uses the class that’s defined in Walkthrough: Connecting Using Tasks and XML HTTP Requests in the context of a complete UWP app.

Creating a Windows Runtime DLL component with C++ sample
Shows how to use the Windows Runtime C++ Template Library to create an in-process DLL component and consume it from C++/CX, JavaScript, and C#.

DirectX marble maze game sample
Demonstrates how to use the Windows Runtime C++ Template Library to manage the lifetime of COM components such as DirectX and Media Foundation in the context of a complete 3-D game.

Toast notifications from desktop apps
Demonstrates how to send toast notifications from a desktop app.

в этом разделеIn This Section

Библиотеки времени выполнения CC Runtime librariesОписывает lib файлы, которые входят в библиотеки среды выполнения C.Discusses the .lib files that comprise the C runtime libraries.

Универсальные подпрограммы среды выполнения C по категориямUniversal C runtime routines by categoryПредоставляет ссылки на библиотеку времени выполнения по категориям.Provides links to the runtime library by category.

Глобальные переменные и стандартные типыGlobal variables and standard typesПредоставляет ссылки на глобальные переменные и стандартные типы, предоставляемые библиотекой времени выполнения.Provides links to the global variables and standard types provided by the runtime library.

Глобальные константыGlobal constantsПредоставляет ссылки на глобальные константы, определяемые библиотекой времени выполнения.Provides links to the global constants defined by the runtime library.

Глобальное состояниеGlobal stateОписывает область глобального состояния в библиотеке времени выполнения C.Describes the scope of global state in the C runtime library.

Универсальные текстовые сопоставленияGeneric-text mappingsСодержит ссылки на универсальные текстовые сопоставления, определенные в файле Tchar.h.Provides links to the generic-text mappings defined in Tchar.h.

Алфавитный справочник по функциямAlphabetical function referenceСодержит ссылки на функции библиотеки времени выполнения C, упорядоченные в алфавитном порядке.Provides links to the C runtime library functions, organized alphabetically.

Обзор семейства функцийFunction family overviewsСодержит ссылки на функции библиотеки времени выполнения C, упорядоченные по семейству функций.Provides links to the C runtime library functions, organized by function family.

Строки языка и страны или регионаLanguage and country/region stringsОписывает способы использования функции для задания языка и строк страны или региона.Describes how to use the function to set the language and Country/Region strings.

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. This means that 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 strongly discouraged.

You can avoid many of these issues by using Application Binary Interface (ABI) technologies instead, as they are 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 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.

Windows Runtime C++ Template Library Compared to ATL

Windows Runtime C++ Template Library resembles the Active Template Library (ATL) because you can use it to create small, fast COM objects. Windows Runtime C++ Template Library and ATL also share concepts such as definition of objects in modules, explicit registration of interfaces, and open creation of objects by using factories. You might be comfortable with Windows Runtime C++ Template Library if you’re familiar with ATL.

Windows Runtime C++ Template Library supports the COM functionality that is required for UWP apps. Therefore, it differs from the ATL because it omits direct support for COM features such as:

  • aggregation

  • stock implementations

  • dual interfaces ()

  • standard enumerator interfaces

  • connection points

  • tear-off interfaces

  • OLE embedding

  • ActiveX controls

  • COM+

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий