Mam taki kod funkcji, którą eksportuję w DLL:
int* DLL_EXPORT CDECL SomeFunction(int* myinput)
{
int r[256];
r[0] = 5;
r[1] = 25;
return r;
}
Bibliotekę ładuję za pomocą LoadLibrary, funkcja jest znaleziona. Wywołanie:
Type TIntArray = array of Integer;
var MyInput:TIntArray;
ResultArray:TIntArray;
SomeFunction:function(MyInput:TIntArray):TIntArray;CDECL;
begin
...
@SomeFunction := GetProcAddress(HDLL, 'SomeFunction');
SetLength(ResultArray, 256);
ResultArray := SomeFunction(MyInput);
//Sprawdzam czy pobralo poprawne dane
ShowMessage(IntToStr(ResultArray[0]) + #32 + IntToStr(ResultArray[1]);
end;
Niestety zamiast wartości "5 25" są tam tylko zera. Natomiast odwrotnie, czyli do funkcji Somefunction dane przesyłane są poprawnie.
EDIT: Jednak teraz sprawdziłem i w żadną stronę nie działa :/
EDIT2: Jako procedura, dane DO funkcji są przesyłane poprawnie (ze STDCALLem próbowałem).