Hallo,
ich habe einen kleinen Testcode in Delphi7 geschrieben, der eine
dll statisch lädt und deren Funktionen nutzt. Der Code funktioniert in Delphi einwandfrei.
Wenn ich den Code nach Lazarus konvertiere, compiliert der zwar fehlerfrei, aber nach dem Start wird er sofort wieder ohne Fehlermeldung beendet. Die
DLL befindet sich jeweils im selben Verzeichnis wie die exe und ist ebenfalls mit Delphi geschrieben. Was könnte da schief gehen?
Hier der konvertierte Lazarus-Code:
Delphi-Quellcode:
unit Unit1;
{$MODE Delphi}
interface
uses
Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 =
class(TForm)
Button1: TButton;
Button2: TButton;
Label1: TLabel;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
procedure DllMessage;
external '
TestLib.dll';
function DLL_Calc(i: integer): integer;
external '
TestLib.dll';
procedure DLL_ShowForm;
external '
TestLib.dll';
implementation
{$R *.lfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
DllMessage;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Label1.Caption:=inttostr(DLL_Calc(2));
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
DLL_ShowForm;
end;
end.
Hier noch die lpr:
Delphi-Quellcode:
program Project1;
{$MODE Delphi}
uses
Forms, Interfaces,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
Bei einem anderen Programm mit einer fremden
dll habe ich in Lazarus ein ähnliches Problem, allerdings da mit Fehlermeldung "
dll nicht gefunden", wohingegen der entsprechende Delphi-Code funktioniert.
Danke für Eure Hilfe!