library Project1;uses
  SysUtils,
  Classes;{$R *.res}function two(i:integer):integer;stdcall;
begin
    result:=i*2;
end;function four(i:integer):integer;stdcall;
begin
    result:=i*4;
end;exports two,four;
end.unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    Button2: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;implementation{$R *.dfm}function two(i:integer):integer;stdcall;external 'Project1.dll';
function four(i:integer):integer;stdcall;external 'Project1.dll';procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
begin
    edit2.Text :='four';
    i:=two(strtoint(edit1.Text ));
    edit3.Text :=inttostr(i);
end;procedure TForm1.Button2Click(Sender: TObject);
var i:integer;
begin
    edit2.Text :='four';
    i :=four(strtoint(edit1.Text));
    edit3.Text:=inttostr(i);
end;end.unit Unit1;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
type
fun=function(i:integer):integer;stdcall;//声明一个函数类型
var
  Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
    hint:thandle;
    fpointer:tfarproc;
    myfun:fun;//声明一个函数类型的变量
begin
    hint:=loadlibrary('Project1.dll');//装入DLL
    if hint>0 then
    begin
    try
        fpointer:=getprocaddress(hint,pchar(edit2.Text));//在DLL查找函数名        if fpointer<>nil then//找到函数名
        begin
            myfun:=fun(fpointer);//实例化此变量
            edit3.Text :=inttostr(myfun(strtoint(edit1.Text)));//调用函数
        end
        else
            messagebox(application.Handle ,'找不到相应函数','提示',MB_OK+MB_ICONINFORMATION);
    finally
        freelibrary(hint);
    end;
    end
    else
        messagebox(application.Handle,'dll没有找到,请检查','提示',MB_OK+MB_ICONINFORMATION);
end;procedure TForm1.Button2Click(Sender: TObject);
var
    hint:thandle;
    fpointer:tfarproc;
    myfun:fun;//声明一个函数类型的变量
begin
    hint:=loadlibrary('Project1.dll');//装入DLL
    if hint>0 then
    begin
    try
        fpointer:=getprocaddress(hint,'four');//在DLL查找函数名        if fpointer<>nil then//找到函数名
        begin
            myfun:=fun(fpointer);//实例化此变量
            edit3.Text :=inttostr(myfun(strtoint(edit1.Text)));//调用函数
        end
        else
            messagebox(application.Handle ,'找不到相应函数','提示',MB_OK+MB_ICONINFORMATION);
    finally
        freelibrary(hint);
    end;
    end
    else
        messagebox(application.Handle,'dll没有找到,请检查','提示',MB_OK+MB_ICONINFORMATION);
end;end.