タグ

ブックマーク / tomosoft.jp (1)

  • C#のためのC++の配列、構造体、ポインタの変換処理

    C#(.NET Framework)では、構造体(Managed)やメンバに対して属性を指定することにより、C言語やC++(Unmanaged)間でデータの相互交換を行うことができます。 MarshalAs属性を用いた構造体の作成 C#では、Cと違って定義だけでは配列の長さがわかりません。そこで、C#(.NET Framework)では、構造体やメンバに対して属性を指定することにより、ManagedとUnmanagedで相互交換を行わせる事ができるようになっている。 例えば、以下のようなC++の構造体を、C#でアクセスします。 struct Info { int index; char name[128]; int statuses[50]; }; この場合、Managed構造体をメンバ順序もサイズも同じUnmanaged構造体を定義するには、属性を使用して以下のように定義します。 [St

  • 1