LabVIEWForum.de - Array aus DLL zurückgeben

LabVIEWForum.de

Normale Version: Array aus DLL zurückgeben
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Ich grüße euch.

Seit 3 Wochen beschäftige ich mich intensiv mit LabVIEW und bin jetzt an ner großen Hürde angekommen, bei der ich nicht weiter weiß.

Gibt es irgendeine Möglichkeit aus einer C/C++ dll ein gefülltes Array an LabVIEW zurückzugeben?

Hintergrund: Ich lese mit einer C dll ein Bild einer Kamera aus und will die Werte (Array mit 640x480 (307200) Werten) in LabVIEW zurückgeben. Ich weiß, dass diese Vorgehensweise nicht optimal ist.
Aber mich interessiert, ob daß überhaupt geht.

Gruß,
Ziu
Hi!

Als Rückgabewert direkt geht es nicht (zumindest bis LV7.0). Aber als Pointer in den Parametern sollte es funtkionieren.

Lg Stefan
Das hab ich schon probiert, auf allen Wegen dir mir eingefallen sind.
Kannst du die Syntax, die die dll erwartet mal posten?
Code:
_declspec (dllexport) long getMarlinImage(long *imageData)

{ }

Der Rückgabewert soll den Fehlercode enthalten und in imageData will ich die Werte schreiben, die ich von meiner Kamera bekomme.

Hab es jetzt schon hinbekommen ein Array zu füllen, allerdings ist es statisch, also die Größe muss schon vor dem dll-Aufruf feststehen. Ich hätt es aber gern dynamisch.
ich dachte die Array-Größe ist von der dll (Bildgröße) ohnehin fix vorgegeben?
schau dir mal diesen thread an, da wird gerade diskutiert dass in LV Arrays prinzipiell variable Größe haben
DarthZiu schrieb:
Code:
_declspec (dllexport) long getMarlinImage(long *imageData)

{ }

Der Rückgabewert soll den Fehlercode enthalten und in imageData will ich die Werte schreiben, die ich von meiner Kamera bekomme.

Hab es jetzt schon hinbekommen ein Array zu füllen, allerdings ist es statisch, also die Größe muss schon vor dem dll-Aufruf feststehen. Ich hätt es aber gern dynamisch.

Wenn ich dich bisher richtig verstehe, dann schreibst du auch den C-Code?

In dem Fall kann deine C-Funktion jeden beliebigen LabVIEW Datentyp zurückliefern und Array's in beliebiger Größe (solange genug Speicher vorhanden ist). Du musst dich "nur" damit befassen, wie LabVIEW die Daten intern abbildet. Den Speicher musst du natürlich dann mit Hilfe des LabVIEW Speichermanagers reservieren.
Referenz-URLs