Delphi的代码:--------------------abcdefg.dll--------------------
JGT = PACKED RECORD //结构体
aaa : array [0..255] of BYTE;
bbb : array [0..255] of ZvZ;
ccc : Byte;
end;
ZvZ = ^JGT;var
alibb : array [0.. 16] of JGT;
alimm : Byte;   
function HooSaa(d : ZvZ; t: Byte):Byte; stdcall;--------------------界面--------------------
function TiiKee(v: ZvZ): string;
begin
if (v^.Initialized = 1)
result := 'yes';
else
  result := 'no';
end;procedure TMainForm.btn1Click(Sender: TObject);
var
i: integer;
item: TListItem;   
begin
alimm := HooSaa(ZvZ(@alibb), 16);
for i := 0 to 11 do
begin
item.SubItems.Add(inttostr(alibb[i].FileCount));
item.SubItems.Add(TiiKee(@alibb[i]));
end;
end;用VS C#来做,请高手们出来呀,指针用内存传递的方式做么?如何用VS实现啊,求帮助!谢谢!

解决方案 »

  1.   

    试试看        struct JGT
            {
                [MarshalAs(UnmanagedType.ByValArray,SizeConst=256)]  //这个加与不加,你都试试
                public byte[] aaa;
                [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]  //这个加与不加,你都试试
                public JGT[] bbb;
                public byte ccc;
            }        [DllImport("abcdefg.dll")]
            private static extern byte HooSaa(ref JGT d,byte t);        JGT alibb = new JGT[17];
            byte alimm;
            private void button10_Click(object sender, EventArgs e)
            {
                foreach (JGT item in alibb)
                {
                    item.aaa = new byte[256];
                    item.bbb = new JGT[256];
                }
                alimm = HooSaa(ref alibb, 16);
            }