LabVIEWForum.de
Übergabe eines struct arrays an eine DDL und wieder Auslesen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: DLL & externer Code (/Forum-DLL-externer-Code)
+---- Thema: Übergabe eines struct arrays an eine DDL und wieder Auslesen (/Thread-Uebergabe-eines-struct-arrays-an-eine-DDL-und-wieder-Auslesen)



Übergabe eines struct arrays an eine DDL und wieder Auslesen - SK-AC - 10.08.2010 10:11

Hallo,

ich muss eine DLL nutzen, die eine Funktion mit einem etwas komplexen Übergabe Parameter hat.

typedef struct
{
int aa;
int bb;
char cc[16];
char dd[128];
} STRUCT;

int32_t Funktion(STRUCT** a , const char* b, int c);

Soweit ich weiß, ist a ein Array von 5 STRUCT Elementen.

Ich habe schon einiges versucht aber seitdem ich weiß, dass das ein Doppelpointer ist, stehe ich vor einer Wand.
Kann jemand Licht ins dunkle Bringen?

Danke,
Stefan

PS.: Die Namen sind verschleiert.


Übergabe eines struct arrays an eine DDL und wieder Auslesen - rolfk - 10.08.2010 11:36

Das ist mit standard LabVIEW tools nicht zu tun (wegen des Doppelpointers) und eine Wrapper DLL wäre hier eindeutig angewiesen. Es ist zudem komisch dass diese Struktur als Doppelpointer übergeben wird. Das könnte darauf hinweisen dass der Speicher dafür in der Funktion angefragt wird (eigentlich unsinnig für eine fixed size Struktur) und es braucht auch nicht so zu sein. Wenn es so ist müsste man aber auch noch wissen mit welchem Memoryallocator sie angelegt wurde um nach dem Gebrauch den entsprechenden Deallocator dafür aufrufen zu können. Oder die DLL müsste den entsprechenden Deallocator ebenfalls exportieren.


Übergabe eines struct arrays an eine DDL und wieder Auslesen - SK-AC - 10.08.2010 14:41

Hallo,

dann muss ich mich da wohl reinarbeiten ...

Danke,
Stefan


Übergabe eines struct arrays an eine DDL und wieder Auslesen - SK-AC - 12.08.2010 08:14

Hallo,

ich habe nun eine Wrapper DLL.
Und von dem Struct sind 16 Elemente in einem Array.

int gw_AttachToDeviceList(STRUCT* a , int size);

Nun wollte ich das Struct als Cluster und das Array als Array bauen.
Aber das will nicht an die Funktion passen.
Was muss ich da als Parameter einstellen?

Danke,
Stefan


Übergabe eines struct arrays an eine DDL und wieder Auslesen - rolfk - 12.08.2010 17:01

Das sind fixed size arrays (wegen der [n] hinter dem Namen) und werden von einem C Compiler inlined in die Struktur gelegt. Das kann man in LabVIEW durch einen Cluster innerhalb des Clusters simulieren der die entsprechenden Anzahl Elemente des entsprechenden Typs enthält.