LabVIEWForum.de
Struktur mit Zeiger auf weitere Struktur an DLL übergeben - 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: Struktur mit Zeiger auf weitere Struktur an DLL übergeben (/Thread-Struktur-mit-Zeiger-auf-weitere-Struktur-an-DLL-uebergeben)



Struktur mit Zeiger auf weitere Struktur an DLL übergeben - Wheeliemaster - 26.05.2015 09:22

Hallo,

folgende Struktur vom Typ "MODULE_LIST" wird von der aufrufenden DLL erwartet:

typedef struct
{
UINT16 countModules; /**< Count of module names.*/
MODULE_NAME * names; /**< Array of module names. */
} MODULE_LIST;

Darin befindet sich ein Zeiger auf eine weitere Struktur "MODULE_NAME".

typedef struct
{
CHAR name[M_MODNAMELEN_A]; /**< Name of the module. */
} MODULE_NAME;

Ich habe das ganze schon als Cluster im Cluster angelegt. Des Weiteren habe ich Padding-Bytes eingefügt. Die Größe von "names" sowie die Anzahl der Array-Elemente ist bekannt. Das Cluster-Array names und das U8-Array "name" hatte ich vorher initialisiert. Nichts hat funktioniert. "Zeiger in Handles" oder "Handles durch Wert" machen keinen Unterschied.

Hat jemand von euch noch eine Idee?

Mfg

WM


RE: Struktur mit Zeiger auf weitere Struktur an DLL übergeben - rolfk - 26.05.2015 16:40

(26.05.2015 09:22 )Wheeliemaster schrieb:  Hallo,

folgende Struktur vom Typ "MODULE_LIST" wird von der aufrufenden DLL erwartet:

typedef struct
{
UINT16 countModules; /**< Count of module names.*/
MODULE_NAME * names; /**< Array of module names. */
} MODULE_LIST;

Darin befindet sich ein Zeiger auf eine weitere Struktur "MODULE_NAME".

typedef struct
{
CHAR name[M_MODNAMELEN_A]; /**< Name of the module. */
} MODULE_NAME;

Ich habe das ganze schon als Cluster im Cluster angelegt. Des Weiteren habe ich Padding-Bytes eingefügt. Die Größe von "names" sowie die Anzahl der Array-Elemente ist bekannt. Das Cluster-Array names und das U8-Array "name" hatte ich vorher initialisiert. Nichts hat funktioniert. "Zeiger in Handles" oder "Handles durch Wert" machen keinen Unterschied.

Hat jemand von euch noch eine Idee?

Mfg

WM

Du wirst nicht darumhin kommen um entweder einen DLL Wrapper in C zu schreiben der von LabVIEW freundlichen Datentypen zu C Datentypen und zurück übersetzt, oder aber Dir auf LabVIEW Diagram Niveau mit Pointern um die Ohren schlagen zu lassen. Cool

Für das erste es ein wenig C Kenntnis erforderlich und ein C Compiler, aber die gibts gegenwärtig überall gratis. Big Grin
Fürs zweite müsste man mal nach DSNewPtr(), DSDisposePtr() und MoveBlock() LabVEW manager functions suchen auf den einschlägigen LabVIEW Forums, unter anderem hier, bei NI und auch bei LAVAG.


RE: Struktur mit Zeiger auf weitere Struktur an DLL übergeben - Wheeliemaster - 27.05.2015 08:40

Danke Rolf,

ich habe es bereits vermutet. Dann werde ich mich mal der DLL-Welt widmen.Ansage