| 
                 分類:[VB.NET] 
 
  分類:[VB.NET] 
  こんにちは Ashです。
  VC++6.0(以下VC)で作成したOCXをVB.NET2003(以下VB)で使用してますが、 VC−VB間でデータのやり取りに構造体のアドレスを渡そうと 思っています。 VC側では従来通り構造体の先頭アドレスが渡ってくるものとして、 それ以降の処理を記述していますが、VB側で渡す構造体の先頭アドレス の取得方法に悩んでいます。
 
  構造体の中身が全てblittable型だと以下の方法でうまくいきます。
  sample   :中身が全てblittable型の構造体 SampleOCX :VCで作成したOCX A     :SampleOCXのメソッド、引数に構造体の先頭アドレスを渡す
  Dim hGc As GCHandle = GCHandle.Alloc(sample, GCHandleType.Pinned) Dim iAddr As Integer = hGc.AddrOfPinnedObject().ToInt32()
  Call SampleOCX.A(iAddr)
  hGc.Free()
  しかし、非blittable型を含む構造体だとMSDNライブラリにも載っているように エラーが発生して先頭アドレスを取得できません。
 
  非blittable型を含む構造体の先頭アドレスを取得する良い方法が あれば教えていただけないでしょうか
  宜しくお願い致します。
 
  |