|
分類:[C#]
>>名無しぃシャープさん unsafeではうまくできませんでした。もしかしたら自分のやり方が間違ってるだけかもしれませんが。
>>Hongliangさん > IntPtr で受けて Marshal.PtrToStructure 、ですかね。 この方法でやったら一応成功しました!ありがとうございます!
一応成功というのは、IntPtrで受け取るところまでです。 Marshal.PtrToStructureを実行するとFatalExecutionEngineErrorが検出されます。 今回の場合構造体の中身までは見る必要がないのでここまでできれば問題はないのですがなぜでしょうねぇ。 もしかしたら構造体を移植したときに変数を間違えたのかもしれません。 ちょっと今は時間がなく、原因を調べられないのでこの辺にさせてもらいます。
参考までに実例を載せておきます。 //DLLのインポート [DllImport("PICNIC_.dll" , EntryPoint="PN_open")] private extern static IntPtr PN_open(String ip, ushort lcd_port, ushort para_port, ushort serial_port);
//中略
IntPtr ptr = PN_open(ip, 0, 10001, 10002); PICNIC test = (PICNIC)Marshal.PtrToStructure( ptr, typeof(PICNIC));
|