Ich habe den Fehler gefunden. In deinem Host-Programm hast du das
stdcall; vergessen:
Delphi-Quellcode:
TDllLanguage = function: TLanguage; stdcall;
TDllInfo = function: TInfo; stdcall;
Aber das mit dem
Result := re ist trotzdem etwas wage. Es funktioniert nur, da Delphi mitdenkt (zumindest bei Records) und bei als
stdcall deklarieren Funktionen die Adresse der Variable, die das Ergebnis aufnehmen soll, als 1. Parameter übergibt. So würde deine Funktion für ein C/C++ Programm so aussehen:
Code:
void
WINAPI info(TInfo* re);
Was natürlich auch für deine Host-Anwendung anwendbar wäre:
Delphi-Quellcode:
TDllInfo = procedure(var re: TInfo); stdcall;
// ist bei stdcall identisch mit
TDllInfo = function: TInfo; stdcall;