C++/WinRT

C ++ / WinRTは、MicrosoftのWindowsランタイムプラットフォーム用のC ++ライブラリであり、最新のWindowsAPIへのアクセスを提供するように設計されています。C ++ / WinRTは、C ++の拡張機能で最新バージョンのMicrosoftVisual C ++を必要とするC ++ / CXとは異なり、標準のC ++ 17ヘッダーファイルライブラリとして提供されます。
C ++ / WinRT
原作者
ケニーカー
開発者
マイクロソフト
初回リリース
2015年6月23日(5年前) (2015-06-23)
安定したリリース
2.0.201102.2 / 2020年11月2日 ; 3か月前  (2020-11-02)
リポジトリ
github .com / Microsoft / cppwinrt
で書かれている
C ++
オペレーティング・システム
マイクロソフトウィンドウズ
タイプ
ソフトウェア開発ツール
ライセンス
MITライセンス
ウェブサイト
docs .microsoft .com / windows / uwp / cpp-and-winrt-apis /
C ++ / WinRTは、バージョン10.0.17134.0(Windows 10、バージョン1803)でMicrosoft WindowsSDKの一部として導入されました。C ++ / WinRTに対するMicrosoftVisual Studioのサポートは、公式にサポートされている拡張機能によって提供されます。
C ++ / WinRTは、2015年にKenny Kerrによって最初にリリースされました。KennyKerrは、その後すぐにMicrosoftに参加しました。 C ++ / WinRTは、WindowsランタイムC ++テンプレートライブラリ(WRL)とC ++ / CXの両方のMicrosoftが推奨する代替品になりました。
内容
1 概要
2 歴史
3 参考文献
4 外部リンク
概要
MicrosoftのWindowsランタイムは、コンポーネントオブジェクトモデル(COM)APIに基づいており、言語プロジェクションを介してアクセスできるように設計されています。言語プロジェクションはCOMの詳細を隠し、特定の言語に対してより自然なプログラミング体験を提供します。C ++開発者にとって、C ++ / WinRTは、公式にサポートされている最新のC ++言語プロジェクションです。
バージョン10.0.17134.0(Windows 10、バージョン1803)の時点で、Microsoft Windows SDKには、ファーストパーティのWindows API(つまり、WindowsネームスペースのWindowsランタイム API)を使用するためのヘッダーファイルベースの標準C ++ライブラリが含まれています。 C ++ / WinRTにはcppwinrt.exeツールも付属しています。このツールは、Windowsランタイムメタデータ(.winmd)ファイルをポイントして、メタデータに記述されているAPIをC ++ /から使用するために投影するヘッダーファイルベースの標準C ++ライブラリを生成できます。WinRTコード。Windowsランタイムメタデータ(.winmd)ファイルは、WindowsランタイムAPIサーフェスを記述する標準的な方法を提供します。cppwinrt.exeツールをメタデータに向けることで、ユーザーは、セカンドパーティまたはサードパーティのWindowsランタイムコンポーネントに実装された、または独自のアプリケーションに実装されたランタイムクラスで使用するライブラリを生成できます。
C ++ / WinRTを使用すると、ユーザーはCOMスタイルのプログラミングに頼ることなく、標準のC ++を使用して独自のランタイムクラスを実装することもできます。ランタイムクラスの場合、型は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の設計と開発は、当時独立していたソフトウェア開発者のKennyKerrによって2014年に開始されました。当時、開発者がC ++を使用してWindowsランタイムAPIを呼び出すための一般的な方法は、C ++ / CX言語プロジェクションを使用することでした。C ++ / CXは、C ++ / CLIから継承されたref newand ^(hat)表記など、非標準の拡張機能をC ++言語に追加します。ISO C ++言語機能の進歩により、拡張機能なしで標準C ++用のWindowsランタイム言語プロジェクションを設計できるようになったということは十分に理解されていませんでした。「マイクロソフトには、C ++とCOMで数十年のキャリアを費やしてきた経験豊富なC ++開発者がたくさんいます」とKerr氏は言います。「とにかく試してみて、うまくいくことを示すのは不可能だと気づかなかった人がかかったと思います。」
「以前にCOMAPIを最新のC ++に投影した経験があったので、同じ手法をWindowsランタイムに適用できるかどうかを確認することにしました。」C ++ / WinRTの開発における初期の課題の1つは、WindowsランタイムがJavaScriptとマネージド.NET言語のプロジェクションをサポートするために行うトレードオフを管理することでした。ジェネリックコレクションが言語プロジェクション全体で機能する方法の複雑さは、これらの設計上の課題のもう1つの例であり、標準のC ++でWindowsランタイムのインターフェイスバージョン管理モデルを処理する効率的な方法を考え出していました。「当時のC ++の理解は本当に深まりました。それ以来、Microsoft Visual C ++コンパイラは、この規模でこのような手法をより効率的に処理できるようになりました。」
参考文献
^ カー、ケニー; マクネリス、ジェームズ(2016年11月2日)。「CppCon2016:Windowsランタイム用の標準C ++の採用」。チャネル9。Microsoft 。 ^ カー、ケニー。「Windowsランタイム用の最新のC ++」。GitHub 。
^ 「C ++ / WinRTパッケージ」。NuGet。Microsoft 。
^ a b c ホワイト、スティーブン(2019年4月17日)。「C ++ / WinRTの概要」。Windows DevCenter。Microsoft 。
^ 「C ++ / WinRTVisualStudio拡張機能」。Visual StudioMarketplace。Microsoft 。
^ a b デズモンド、マイケル。「OutsideIn:KennyKerrがC ++ / WinRTをMicrosoftにもたらした方法」。MSDNマガジン。Microsoft 。
外部リンク
ウィキブックスには、次のトピックに関する本がWindowsプログラミング
C ++ / WinRT-UWPアプリ開発者| Microsoft Docs
KennyKerrのブログ
C ++ / WinRT VisualStudio拡張機能
Visual StudioMarketplace。
Microsoftインターフェイス定義言語3.0の概要

投稿日:
カテゴリー: C