VC写DLL 参数为结构数组,Delphi如何调用???1.VC写得dll,参数为结构,delphi调用 实现如下:
c结构如下
typedef struct {
char   Name[32];
short  FieldNo[10]    ;
short  FieldCount;
}K_INFO;
c函数声明为:
int  __stdcall Test(K_INFO* Info);我在delphi里结构为  K_INFO = PACKED RECORD
        Name :    ARRAY[ 0..31 ]  OF char;
        FieldNo:  ARRAY[ 0..9 ] OF smallint;
        FieldCount:smallint;
  END;
 PK_INFO=^K_INFO;
我在delphi里声明为
Function Test(Info:PK_INFO):integer;stdcall;external 'Mydll.dll' name 'Test';调用时:
var
  Info:K_INFO;
  ret:integer;
begin
  Info.Name:='test';
  Info.FieldCount:=0;
  ret=Test(@Info);
end;2.如果DLL函数参数为数组呢? DLL怎么调用呢~?~ 求强人~~
int  __stdcall Test(K_INFO* Info[10]);

解决方案 »

  1.   

    var
      info: array[0..9] of K_INFO;test(info);这样试试看
      

  2.   

    定义类型arr = array[0..9] of PK_INFO;
    Function Test(Info: arr):integer;stdcall;external 'Mydll.dll' name 'Test';var
      info: arr;test(info);这样呢?我自己测试可以通过的。
      

  3.   

    把这个贴上了。
    Function Test(info: array of PK_INFO):integer; stdcall;external 'job.dll' name 'getJobDetails';procedure TForm1.Button1Click(Sender: TObject);
    var
      ii: array[0..9] of K_INFO;
      pii: array[0..9] of PK_INFO;
      res: integer;
      i: integer;
    begin
      for i:= 0 to 9 do
      begin
        pii[i]:= @ii[i];
      end;
      res:= test(pii);
      showmessage(pii[2]^.name);
      showmessage(inttostr(res));
    end;