С++/ВинРТ
![]() | Эта статья может быть слишком технической для понимания большинства читателей . ( Март 2019 г. ) |
Оригинальный автор(ы) | Кенни Керр [ 1 ] |
---|---|
Разработчик(и) | Майкрософт |
Первоначальный выпуск | 23 июня 2015 г. [ 2 ] |
Стабильная версия | 2.0.240405.15
/ 5 апреля 2024 г [ 3 ] |
Репозиторий | github |
Написано в | С++ |
Операционная система | Microsoft Windows |
Предшественник | С++/CX , WRL |
Тип | Инструменты разработки программного обеспечения |
Лицензия | МОЯ лицензия |
Веб-сайт | он же |
C++/WinRT — это библиотека C++ для Microsoft платформы Windows Runtime , предназначенная для обеспечения доступа к современным API-интерфейсам Windows . C++/WinRT предоставляется как стандартная библиотека заголовочных файлов C++17, в отличие от C++/CX , которая является расширением C++ и требует последней версии Microsoft Visual C++ . [ 4 ]
C++/WinRT был представлен как часть Microsoft Windows SDK в версии 10.0.17134.0 (Windows 10, версия 1803) и является компонентом Windows App SDK (ранее известного как Project Reunion). Поддержка Microsoft Visual Studio для C++/WinRT обеспечивается официально поддерживаемым расширением. [ 5 ]
C++/WinRT был первоначально выпущен в 2015 году Кенни Керром, который вскоре после этого присоединился к Microsoft. [ 6 ] C++/WinRT теперь является рекомендуемой Microsoft заменой как библиотеки шаблонов C++ (WRL) среды выполнения Windows, так и C++/CX. [ 4 ]
Обзор
[ редактировать ]Microsoft от Среда выполнения Windows основана на API-интерфейсах модели компонентных объектов (COM) и предназначена для доступа через языковые проекции . Языковая проекция скрывает детали COM и обеспечивает более естественный процесс программирования для данного языка. Для разработчиков C++ C++/WinRT — это официально поддерживаемая современная проекция языка C++.
Начиная с версии 10.0.17134.0 (Windows 10, версия 1803), Microsoft Windows SDK содержит стандартную библиотеку C++ на основе заголовочного файла для использования сторонних API-интерфейсов Windows (то есть среды выполнения Windows API-интерфейсов в пространствах имен Windows). [ 4 ] C++/WinRT также поставляется с cppwinrt.exe
инструмент, который можно указать на файл метаданных среды выполнения Windows (.winmd), чтобы создать стандартную библиотеку C++ на основе файла заголовка, которая проецирует API, описанные в метаданных, для использования из кода C++/WinRT. Файлы метаданных среды выполнения Windows (.winmd) предоставляют канонический способ описания поверхности API среды выполнения Windows. Указывая на cppwinrt.exe
инструмент в метаданных, пользователи могут создать библиотеку для использования с любым классом среды выполнения, реализованным во втором или стороннем компоненте среды выполнения Windows или реализованным в их собственном приложении.
С помощью C++/WinRT пользователи также могут реализовывать свои собственные классы среды выполнения, используя стандарт C++, не прибегая к программированию в стиле COM. Для класса среды выполнения типы могут быть описаны в файле MIDL (.idl), и из этого файла midl.exe
и cppwinrt.exe
инструменты генерируют файлы исходного кода шаблона реализации, готовые для добавления пользователями своей собственной реализации. В качестве альтернативы пользователи могут просто реализовать интерфейсы, производные от базового класса, который является частью библиотеки заголовков C++/WinRT. Эти методы используют любопытный повторяющийся шаблон шаблона для вызова функций посредством статической диспетчеризации. C++/WinRT использует множество современных функций языка ISO C++11 (и более поздних версий) для повышения производительности и производительности во время выполнения; эти функции были недоступны при предшественников C++/WinRT ( WRL и C++/CX разработке ).
Стандартные типы данных, алгоритмы и ключевые слова C++ используются с C++/WinRT; однако проекция также имеет свои собственные типы данных.
C++/WinRT создает двоичные файлы меньшего размера, чем другие языковые варианты среды выполнения Windows.
История
[ редактировать ]Проектирование и разработка C++/WinRT была начата в 2014 году тогдашним независимым разработчиком программного обеспечения Кенни Керром . В то время для разработчиков преобладающим способом вызова API-интерфейсов среды выполнения Windows с использованием C++ было использование проекции языка C++/CX . C++/CX добавляет к языку C++ нестандартные расширения, такие как ref new
и ^
(шляпа), унаследованная от C++/CLI. Тогда еще не было полностью оценено, что развитие возможностей языка ISO C++ означало, что стало возможным разработать проекцию языка среды выполнения Windows для стандартного C++ без расширений. «В Microsoft есть много очень опытных разработчиков C++, которые десятилетиями работали с C++ и COM», — говорит Керр. «Я думаю, что потребовался кто-то, кто не осознавал, что это все равно невозможно просто попробовать и показать, что это работает». [ 6 ]
«У меня уже был некоторый опыт проектирования COM API в современном C++, поэтому я решил посмотреть, смогу ли я применить те же методы к среде выполнения Windows». Одной из первых проблем при разработке C++/WinRT было управление компромиссами, которые среда выполнения Windows делает для поддержки проекций для JavaScript и управляемых языков .NET «из коробки». Сложность в том, как общие коллекции работают в языковых проекциях, является еще одним примером этих проблем проектирования, равно как и поиск эффективного способа для стандартного C++ обрабатывать модель управления версиями интерфейса среды выполнения Windows. «Это действительно продвинуло мое понимание C++ в то время, и с тех пор подтолкнуло компилятор Microsoft Visual C++ более эффективно обрабатывать такие методы в этом масштабе».
Ссылки
[ редактировать ]- ^ Керр, Кенни; Макнеллис, Джеймс (2 ноября 2016 г.). «CppCon 2016: использование стандарта C++ для среды выполнения Windows» . Канал 9 . Майкрософт . Проверено 1 ноября 2019 г.
- ^ Керр, Кенни. «Современный C++ для среды выполнения Windows» . Гитхаб . Проверено 1 ноября 2019 г.
- ^ «Пакет C++/WinRT» . НуГет . Майкрософт . Проверено 15 июля 2024 г.
- ^ Перейти обратно: а б с Уайт, Стивен (17 апреля 2019 г.). «Введение в C++/WinRT» . Центр разработки Windows . Майкрософт . Проверено 10 июля 2019 г.
- ^ «Расширение C++/WinRT Visual Studio» . Торговая площадка Visual Studio . Майкрософт . Проверено 1 ноября 2019 г.
- ^ Перейти обратно: а б Десмонд, Майкл (январь 2017 г.). «Снаружи внутри: как Кенни Керр представил C++/WinRT в Microsoft» . Журнал MSDN . Майкрософт . Проверено 1 ноября 2019 г.
Внешние ссылки
[ редактировать ]