CまたはC++からWinRTオブジェクトへの動的(つまりリフレクションベースの)呼び出しを行いたいと思います。私は、実行時にwinmdファイルを利用できると仮定して、メソッドが何であり、何のパラメータを取るかを知ることができます。WinRTインターフェイスへの動的呼び出し
OLEオートメーションでは、実際の呼び出しにIDispatchを使用できました。ただし、WinRTオブジェクトはIDispatchをサポートしていません。どうすれば電話をかけることができますか?プロセッサのCOM呼び出し規約に従って、パラメータを動的に渡すことを可能にする、ある種のFFIライブラリが必要ですか?または、私は本当に静的なクラス/構造体宣言(C/C++用)が必要ですか?
:ターゲットシステムはメトロスタイルのアプリです。これは、禁止されたAPIを含むソリューションを排除します。
有限の.winmdファイルがあります。独自のツールを使用して1つ1つのラッパーを生成するのはなぜですか。正規のリフレクションを使用できます。 – Ben
winmdファイルのセットは有限ではありません:ユーザーが作成できるすべての "コンポーネントDLL"は新しいwinmdファイルを生成し、実行時にのみセット全体を知ることができます。しかし、はい - このオプションは私が "静的な"宣言を意味するものです。 –
ラッパーアセンブリを生成するツールを作成し、実行時にツールを呼び出して新しいコンポーネントのラッパーを生成し、アセンブリを動的にロードしてからリフレクションを使用することができます。このツールは単独では便利です(実際には存在しない場合)。ユーザは新しいことを学ぶのではなく、既存のリフレクションの知識を活用することができます。 – Ben