Guten Abend,
Ich habe eine Simple DLL Funktion die einen Array zurückgibt:
Code
extern "C" __declspec(dllexport) int *GetMyIntegers()
{
int myIntegers[3];
myIntegers[0] = 10;
myIntegers[1] = 20;
myIntegers[2] = 30;
return myIntegers;
}
Da es sich hier um ein Array handelt ist es mit dem Rückgabewert bei einem DllCall ja nicht so einfach wie mit einem einfach int z.b... Ich habe nun schon ein paar Dinge versucht die ich so im Internet finden konnte, leider noch erfolglos.. hier mal mein aktueller Versuch:
Code
$hDll = DllOpen("VR_API.dll")
$intptr = DllCall($hDll, "int*:cdecl", "GetMyIntegers")
$struct = DllStructCreate("int[3]",$intptr[0])
$myInteger = DllStructGetData($struct, 1, 1)
ConsoleWrite("1 = " & $myInteger & @LF)
$myInteger = DllStructGetData($struct, 1, 2)
ConsoleWrite("2 = " & $myInteger & @LF)
$myInteger = DllStructGetData($struct, 1, 3)
ConsoleWrite("3 = " & $myInteger & @LF)
Alles anzeigen
OutPut der Console:
1 = 0
2 = 18183192
3 = 339
2 und 3 ändern sich aber Regelmäßig mit jedem Aufruf... So Habe ich es auch probiert , bekomme jedoch nur 0 raus:
Code
$hDll = DllOpen("VR_API.dll")
$struct = DllStructCreate("int[3]")
$intptr = DllCall($hDll, "int*:cdecl", "GetMyIntegers", "int", DLLStructGetPtr($struct))
$myInteger = DllStructGetData($struct, 1, 1)
ConsoleWrite("1 = " & $myInteger & @LF)
$myInteger = DllStructGetData($struct, 1, 2)
ConsoleWrite("2 = " & $myInteger & @LF)
$myInteger = DllStructGetData($struct, 1, 3)
ConsoleWrite("3 = " & $myInteger & @LF)
Alles anzeigen
Würde mich sehr über Hilfe Freuen