CLR がネイティブ コードを「管理」し、そのネイティブ コード (c++ 関数) を c# から直接呼び出すことができるようにコンパイルされているプロジェクト (SharpDX など) がたくさんあることがわかりました。
私はこれがどのように機能するかを理解しようとしています..そして、そこにいる誰かが知っていればいいでしょう.
これまで見てきたことは、C# プロジェクトの参照を、他の C# ライブラリと同じように (リフレクションを必要とせずに) 「CLR 互換」C++ ライブラリに追加し、「myCppLibrary を使用して」のように追加してから、利用可能なメソッドを呼び出します。
追加したばかりの参照で使用できる関数を確認したところ、C++ ライブラリのヘッダー (.h) ファイルで PUBLIC として宣言されたすべての関数に c# からアクセスできるようです。コンパイラ。
したがって、実際に何が起こっているかは次のとおりです。
C++ ライブラリのヘッダー (.h) ファイルでパブリック メソッド/変数を宣言しています。ライブラリの [プロパティ] タブで CLR 管理が利用できることを確認してコンパイルします。(私は Visual Studio 2012 を使用しています) コンパイラは、すべてのヘッダー ファイル (.h) に対して c# クラスを生成し、その上にパブリック メソッド/プロパティを含めます。
しかし、私が理解していないのは、「myCppLibrary」からの GiveNumber() 関数を呼び出す方法です..その関数の実装はどこで実行されますか?
CLR は C++ ネイティブ コードと自動的に相互通信しますか、それとも実際に何が起こっているのでしょうか?