6

ネイティブC++の場合、つまり、マネージC ++でも、CLIでも、Microsoftの特別なものでもないので、次のことができます。

1)高性能を得る2)既存のc ++コードライブラリとエンジンを使用する3)クロスプラットフォームコードを作成する(たとえば、iOSやAndroid用)

完全にネイティブなC++である必要はありません。マネージコードを使用して、iOSのobject-cやAndroidのJavaなどのUIを実行できますが、インターフェイスのほかに、ネイティブのC ++コードを使用できますか?

4

2 に答える 2

7

こちらのプレゼンテーションをご覧になることをお勧めします: Using the Windows Runtime from C++、特に Herb Sutter のコメント。私は引用します:

次の質問に答えてください: C++ GUI アプリケーションを Metro スタイルで作成することにした場合、これらすべての独自の ref、sealed、^、Platform::String^ 拡張機能を GUI コンポーネントに使用する必要がありますか?

@Tomas: いいえ、強制的に使用する必要はありません。サポートされている 2 つの方法を提供しています。

1) これらの言語拡張 (C++/CX)。

2) C++ テンプレート ライブラリ (WRL)。Yannick が言及したように、Windows Kits\8.0\Include\winrt\wrl を参照してください。WRL は、ATL に沿った C++ ライブラリ ベースのソリューションであり、テンプレート ラッパー/コンビニエンス クラスや明示的なスマート ポインターなど、探しているものを提供します。

于 2012-10-26T15:57:12.497 に答える
3

はい、絶対にできます。本物のネイティブ C++ が完全にサポートされています。

ただし、ほとんどの場合、新しい WinRT ライブラリを使用してユーザー インターフェイスまたはシステム コールを実行する必要があります。これらはネイティブ コードであり、C++ から直接完全に呼び出すことができますが、すべてが参照カウントであるため、実際にそうするのは非常に困難です。 COM オブジェクトに加えて、それらのインスタンスを作成するのは単に "new" を呼び出すほど簡単ではないため、多くの見苦しいコードを作成する必要があります。

以前の回答で述べたように、Microsoft はこれを支援する 2 つの方法を提供しています。1 つは C++ への言語拡張によるもので、もう 1 つは C++ テンプレート ライブラリです。個人的には、APIを呼び出すのと同じくらい簡単なことをするのはどちらもかなり醜いと思いますが、それは私だけです:)

しかし、あなたの質問に答えるために、実際のネイティブ C++ でアプリケーションを作成することは完全に可能です。何に対してもマネージ コードを使用する必要はまったくありません。しかし、API の呼び出しをより簡単にするために、言語拡張機能またはテンプレート ライブラリのいずれかを使用することをお勧めします。

個人的には、最も必要な機能をより使いやすい C++ ネイティブ ライブラリとして公開する WinRT のラッパーを誰かが作成し、代わりに誰もが C++ からそれを使用できるようになることを望んでいます...

于 2012-10-28T09:37:51.690 に答える