P/Invoke

提供: MonoBook
ナビゲーションに移動 検索に移動

P/Invoke(語源:Platform Invoke)とは、.NET Frameworkにおける共通言語基盤 (CLI) の機能の一つで、マネージコードから動的ライブラリ内のネイティブコードを呼び出すことを可能にするものである。受け渡しされるデータ型は、必要であればCLIによって適切に変換されるが、メタデータによってプログラマーが明示的に変換方法を指定することもできる。こうしたデータの変換をマーシャリングという。

概要[編集 | ソースを編集]

大雑把にいえばC#からCで書かれたライブラリの関数を呼び出せる。 いってみればJavaのJNIとほとんど同じだな。 だがJavaより遥かに簡潔明瞭に書ける。 マネージコードからネイティブコードへは適切に切り替えられるためunsafeは不要である。

重い処理を部分的にネイティブコードで書いて加速を目論む用途などで使われるが、P/Invokeの呼び出し(マネージコードとネイティブコードの切り替え)が絶望的なほど遅いので頻繁に呼ぶと逆に遅くなるパターンも多い。これもJavaのJNIと同じだな。

Xamarinなどでは標準対応されていないOSの標準ライブラリを叩くのにも活躍する。

関連項目[編集 | ソースを編集]

外部リンク[編集 | ソースを編集]

参考文献[編集 | ソースを編集]