c写的Dll中有这样的函数定义int FAR PASCAL EXPORT Init(char *Number);如何引用我声明
function Init(var Nber:PChar): Integer; stdcall; external 'Demo.DLL';procedure TForm1.Button1Click(Sender: TObject);
var anum:pchar;
rsl:integer;
begin
rsl:=init(anum);
end;运行后报错,怎么办?

解决方案 »

  1.   

    请测试
    procedure TForm1.Button1Click(Sender: TObject);
    var 
    anum:pchar;
    S:  String;
    rsl:integer;
    begin
    anum:=@S[1];
    rsl:=init(anum);
    end;
      

  2.   

    如果你的Number参数是形参的话,应该这样定义:
    Function Init( Number : PChar ) : Integer; Stdcall; External 'Demo.DLL';
    如果你的Number参数是变参的话,应该这样定义:
    Function Init( Var Number : String ) : Integer; Stdcall; External 'Demo.DLL';
      

  3.   

    你的程序有问题!!没有对PChar初始化!!!
      

  4.   

    function Init(Nber:PChar): Integer; stdcall; far; external 'Demo.DLL';procedure TForm1.Button1Click(Sender: TObject);
    var
      anum: array[0..256] of Char;
      rsl: Integer;
    begin
      rsl := init(anum);
    end;
      

  5.   

    如果支持Object Pascal的dll 需定义为
    function Init(Nber:PChar): Integer; stdcall; far; pascal external 'Demo.DLL';procedure TForm1.Button1Click(Sender: TObject);
    var
      anum: array[0..256] of Char;
      rsl: Integer;
    begin
      rsl := init(anum);
    end;