Erstmal mußt du die Länge des Arrays immer mit übergeben. Dynamische Arrays wie sie in Delphi realisiert werden haben natürlich nichts mit C-Arrays zu tun oder gar mit der MFC-Klasse CArray o.ä.
Ein Array ist ansonsten nur ein Pointer auf den Typ der Elemente des Arrays. Man kann also auch schreiben:
Delphi-Quellcode:
type
PInteger = ^Integer;
procedure Test(var Ausgabe: PInteger; var ArrLength: Integer); stdcall;
begin
...
end;
Cleverer wäre natürlich eine Struktur zu deklarieren, die portabel ist, Bsp:
Delphi-Quellcode:
type
PInteger = ^Integer;
IntArray = record
Length: LongWord;
Array: PInteger;
end;
... wobei die
DLL natürlich auch gleich die Funktionen zum Allozieren und De/Reallozieren mit exportieren
muß, weil du nicht einfach die Memory Manager von C# und Delphi mischen kannst.