Windows Phone 8 アプリ用のネイティブ C++ プロジェクト(DirectX)を生成するゲーム エンジンを使用しています。ただし、アプリ内課金などを統合するには、エンジンで特定の C++ メソッドがトリガーされるたびに C# メソッドを呼び出す必要があります。WP8 で C++ から C# メソッドを呼び出すという名前の SO スレッドがありますが、これは明らかに逆です:「実際に C++ メソッドを呼び出す C# ベースのアプリ」。
私が今行き詰まっているのは、public ref class sealed
Windows Phone 用の Visual Studio 2012 Express を使用して、C++/CX で「Visual C++ -> Windows Phone ランタイム コンポーネント」を作成したことです。これは、プロジェクト プロパティが「Windows ランタイム コンポーネント」に設定されている「Visual C# -> Windows ストア クラス ライブラリ」の .winmd ファイルを参照します。興味深いことに、Visual Studio 2012 Express for Windows 8 (Windows Phone ではない) でこれを作成する必要がありました。これは、VS for WP8 が .winmd ファイルを生成するオプションを提供していないためです。ゲームをコンパイルすると、次のエラー メッセージが表示されます。
.winmd ファイル '...\InAppBilling.winmd' の実装ファイルが提供されていません。アプリ マニフェストで登録情報の生成を有効にするには、プロジェクト ファイルの winmd 参照項目で 'Implementation' メタデータを指定します。
C++ 内から C# メソッドを呼び出すにはどうすればよいですか? DLL、継承、デリゲートなどの派手なものは必要ありません。機能する単純な静的呼び出しだけで、それ以外はすべて C# で処理されます。