Mam w programie biblioteki DLL. Wczytuję je procedurą:
procedure TForm1.Button1Click(Sender: TObject);
var
DLL : THandle; // uchwyt biblioteki
ShowForm : procedure;
begin
DLL := LoadLibrary('LibSample.dll'); // laduj biblioteke
try
@ShowForm := GetProcAddress(DLL, 'ShowForm'); // laduj procedure
if @ShowForm=nil then raise Exception.Create('Bład - nie mogę znaleźć proceudry w bibliotece!');
ShowForm; // wywolaj procedure
finally
FreeLibrary(DLL); // wreszcie zwolnij pamiec
end;
end;
[nazwa biblioteki zmieniona]
Lecz po wywołaniu procedury wyskakuje mi duuuuuuuużo błędów aż Windows sam zamyka program. Kod projektu biblioteki:
library Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.res}
procedure ShowForm;
var
Form1 : TForm1;
Form2 : TForm2;
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
end;
exports
ShowForm;
begin
end.
Co zrobić żeby procedura była wczytywana bez błedów?
PS. Ten skrypt ściągnąłem z Artykułów w 4programmers.net