none
Arrayのアンマネージコードへの渡し方 RRS feed

  • 質問

  • C#側でArrayを準備してアンマネージコードで中身を書き換えたいと思っています.

    次の様に書いてみましたが実行時に不当な書き込みをしたとエラーが出ます.

     

     

     public class Hoge
     {
      [DllImport("Hoge.dll")]
      public static extern void Func(IntPtr buf);
     }

    public class Foo2

    {

      private Byte[] data;

      public Foo2 ()

      {

        data = new Byte[100];

     

        GCHandle gch = GCHandle.Alloc (data);
        Hoge.Func(GCHandle.ToIntPtr (gch));
        gch.Free ();

      }
    }

     

     

    どのように書くのが正しいのでしょうか?

    ちなみにDLL側でのCの宣言は

     

    extern void Func(void * buf);

     

    2008年3月3日 5:12

すべての返信