kuhlmaehn
Erfahrenes Mitglied
Hi,
ich spiele gerade etwas mit dem CL NUI Treiber für Kinect rum und komme dort jetzt seit zwei Tagen nicht weiter.
Es geht mir speziell um einen dll-Aufruf, den ich nicht verarbeitet bekomme.
Der Import in C sieht wie folgt aus:
In C# dagegen so:
Mit Angabe von camera und timeout werden die Daten dann also in den IntPtr data geladen.
Da die Auflösung 640x480 ist, habe ich mir nun zunächst einen IntPtr erzeugt und ihm Speicherplatz zugewiesen:
Ohne das allozieren habe ich zwar keinen Fehler bekommen, allerdings enthielt pout dann auch keinen Pointer. Jetzt müsste ich doch, angefangen bei der Adresse von pout, 640 * 480 * sizeof(uint) viele Pointer haben, die ich nun alle dereferenzieren könnte, um an die Daten zu kommen. Hier bin ich allerdings nicht weitergekommen 
Gibt es denn vielleicht in C# einen besseren Weg um an die Ausgabe einer dll zu gelangen?
ich spiele gerade etwas mit dem CL NUI Treiber für Kinect rum und komme dort jetzt seit zwei Tagen nicht weiter.
Es geht mir speziell um einen dll-Aufruf, den ich nicht verarbeitet bekomme.
Der Import in C sieht wie folgt aus:
Code:
IMPORT(bool) GetNUICameraDepthFrameRAW(CLNUICamera cam, PUSHORT pData, int waitTimeout = 2000);
Code:
[DllImport("CLNUIDevice.dll", EntryPoint = "GetNUICameraDepthFrameRAW", CallingConvention = CallingConvention.Cdecl)]
public static extern bool GetCameraDepthFrameRAW(IntPtr camera, IntPtr data, int timeout);
Da die Auflösung 640x480 ist, habe ich mir nun zunächst einen IntPtr erzeugt und ihm Speicherplatz zugewiesen:
Code:
IntPtr pout = Marshal.AllocHGlobal(640 * 480 * sizeof(uint));

Gibt es denn vielleicht in C# einen besseren Weg um an die Ausgabe einer dll zu gelangen?