übergib doch einfach einen Pointer auf die Funktion an die
DLL und diese führt die dann aus.
Delphi-Quellcode:
Dll:
Main
Program:
function dosth(blub: integer): integer;
begin
..
end;
type
TInit =
procedure (func: Pointer);
function getgunction(
name: pchar): Pointer;
begin
if name = '
dosth'
then
result := @dosth;
//etc...
end;
var
init: TInit;
begin
//DLL laden
//init funktion in der DLL aufrufen:
//init laden
init(@getfunction);
end.
Dll:
type
TFunc =
function (
name: pchar): Pointer;
TDoSth =
function (blub: integer): integer;
var
getfunc: TFunc;
dosth: TDoSth;
procedure init(func: Pointer);
begin
@getfunc := func;
@dosth := getfunc('
dosth');
dosth(..);
end;
exports
init;
begin
end.