C++のDLLをC#から利用する方法
参考書
- P/Invoke (Platform Invocation Service)
- アンマネージドDLL内の関数や構造体、コールバックへのアクセスを可能とする.NETの機能
- マーシャラ (Marshaler)
- COMとWindows APIが使用する型についての情報を持ち、CLRの型の既定変換を自動的に行う.NETの機能
- CLS (Common Language Specification)
- 共通言語仕様。多くのアプリケーションで必要とされる基本的な言語機能のセット
Marshalクラスは、アンマネージコードを扱うときに利用できるメソッドを数多く提供します。
クラスと構造体
C++のクラスや構造体のラッパーを作成する際には、そのデータメンバのメモリ内での配置を明示するためにStructLayout属性を指定する必要があります。
パラメータのインとアウト
既定の動作
| |
引数 (イン) |
戻値 (アウト) |
| 値渡しパラメータ |
コピー |
|
| refパラメータ |
コピー |
コピー |
| outパラメータ |
|
コピー |