Oder habe ich dich falsch verstanden?
Offenbar! Wenn die Bibliothek ein TFoobar braucht, dann muss TFoobar auch irgendwo innerhalb der
DLL deklariert sein. Sollte TFoobar eine rein virtuelle Klasse sein, dann könnte man eine Ableitung erstellen, die sämtliche Methoden auf die Interface-Instanz weiterleitet.
Beispiel:
Delphi-Quellcode:
type
TFoobar = class
public
procedure MyMethod; virtual;
end;
IFoobar = interface
procedure MyMethod;
end;
TFoobarWrapper = class(TFoobar)
private
FInterface: IFoobar;
public
constructor Create(AInterface: IFoobar);
procedure MyMethod; override;
end;
constructor TFoobarWrapper.Create(AInterface: IFoobar);
begin
inherited Create;
FInterface := AInterface;
end;
procedure TFoobarWrapper.MyMethod;
begin
FInterface.MyMethod;
end;
Innerhalb der
DLL erzeugst du dann ein TFoobarWrapper mit dem Interface im Create und den Wrapper übergibst du dann an die Bibliothek. Geht halt nur, wenn TFoobar ausreichend virtuelle Methoden hat.
Wenn, wie gesagt, TFoobar eine Datenbank-Connection ist, dann sag doch mal, welche. Eventuell kann man dann konkretere Aussagen treffen.