C++のDLLをC#から利用する方法

参考書

P/Invoke (Platform Invocation Service)
アンマネージドDLL内の関数や構造体、コールバックへのアクセスを可能とする.NETの機能
マーシャラ (Marshaler)
COMとWindows APIが使用する型についての情報を持ち、CLRの型の既定変換を自動的に行う.NETの機能
CLS (Common Language Specification)
共通言語仕様。多くのアプリケーションで必要とされる基本的な言語機能のセット

マーシャリング (Marshaling)

Marshalクラスは、アンマネージコードを扱うときに利用できるメソッドを数多く提供します。

クラスと構造体

C++のクラスや構造体のラッパーを作成する際には、そのデータメンバのメモリ内での配置を明示するためにStructLayout属性を指定する必要があります。

パラメータのインとアウト

既定の動作
  引数 (イン) 戻値 (アウト)
値渡しパラメータ コピー  
refパラメータ コピー コピー
outパラメータ   コピー