本文整理自网络,侵删。
library TestDll;{$S-}
uses Vcl.Forms, Winapi.Windows, System.SysUtils, System.Classes;
{$R *.res}
//stdcall参数的传递顺序
function Add(Num1, Num2: Integer): Integer; stdcall;begin Result := Num1 + Num2; Exit;end;
procedure ShowMessage(Content: string);begin MessageBox(0, PWideChar(Content), '', MB_OK);end;
function Show: Boolean; stdcall;begin
Application.MessageBox(PChar('Show FormDll'), '信息', 64);
Result := True;
end;
exports
Add;
begin
end.
//主程序unit MainFrm;
interface
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;//DLL中导出的函数function Add(Num1,Num2:Integer):Integer;stdcall;external 'TestDll.dll';
var Form1: TForm1;
implementation
{$R *.dfm}
//动态调用procedure TForm1.Button1Click(Sender: TObject);var MyFun: function(x, y: Integer): Integer; stdcall;var Hand: System.Cardinal;begin //加载DLL Hand := LoadLibrary('TestDll.dll'); if Hand <> 0 then begin try MyFun := GetProcAddress(Hand, 'Add');
ShowMessage(MyFun(10, 20).ToString); finally //释放DLL FreeLibrary(Hand); end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);begin ShowMessage(Add(15,1).ToString); //静态end;
end.
相关阅读 >>
Delphi中datetimepicker控件同时输入日期和时间
Delphi combobox的属性和事件、及几个鼠标事件的触发
Delphi firemonkey限制tedit只能输入数字的完美方法
更多相关阅读请进入《Delphi》频道 >>