LabVIEWForum.de
struct mit char **Parameter in DLL - 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: struct mit char **Parameter in DLL (/Thread-struct-mit-char-Parameter-in-DLL)



struct mit char **Parameter in DLL - t4b-1re-2 - 13.08.2007 08:48

Hallo,

ich komm nich weiter Wall
Ich habe innerhalb einer API eine structdefinition, und eine Funktion die dieses struct übergeben bekommt:
[code]typedef struct {


struct mit char **Parameter in DLL - IchSelbst - 13.08.2007 09:42

Da sehe ich große Probleme auf dich zu kommen.

Ich sag gleich mal die eine Lösung: Wrapper-DLL.

Die anderen wären: Suchen auf NI.COM. Warten, bis sich hier einer meldet, der was genaueres weiß als ich. etc.


Zu den Problemen.

[quote='']Ich habe innerhalb einer API eine structdefinition, und eine Funktion die dieses struct übergeben bekommt:
[code]typedef struct {


struct mit char **Parameter in DLL - rolfk - 24.08.2007 10:44

' schrieb:Da sehe ich große Probleme auf dich zu kommen.

Ich sag gleich mal die eine Lösung: Wrapper-DLL.

Die anderen wären: Suchen auf NI.COM. Warten, bis sich hier einer meldet, der was genaueres weiß als ich. etc.
Zu den Problemen.

Problem: Ein (Doppel)Pointer in einer Struktur, die selbst als Pointer übergeben wird.
Das ist praktisch in LV nicht möglich. Dasfür ist LV nicht ausgelegt. Hierzu wäre ein Pointer in einem Cluster notwendig. Es gibt in LV aber keine expliziten, also für den Anwender manupulierbare Pointer. Demzufolge kann dieser Datentyp auch nicht als Variable gespeichert werden. (Nichtsdestoweniger kann natürlich einer mal ein VI geschrieben haben, das diese Funktionalität hat).

Problem: FILE
FILE ist ein bestimmter Datentyp, hinter dem (glaub ich zumindest, so tief geh' ich da nicht mehr rein) auch eine Struktur steht. Ob man hier so ganz ordinär eine "FILE"-Referenz aus LV anschleißen kann, wäre einen Versuch Wert. (FILE kann eine Datei, Drucker, IODevice etc. sein.) Ich bin da aber eher skeptisch.

Ohne Pointer auf die Struktur, in der sich dieser Pointer befindet, geht aber sowieso nix.

Genau! ->>> Wrapper DLL ist hier so ziemlich die einzige Lösung. Eine andere Möglichkeit herauszusuchen, auch wenn es ganz, ganz vielleicht ginge benötigt zigmal mehr Zeit.

Zum Datatype FILE. Das ist zwar C runtime intern tatsächlich manchmal eine Struktur aber das Layout davon ist privat für die C runtime Library und ein Anrufer muss einfach mal davon ausgehen dass es ein void * ist. In LabVIEW heisst das, dass man dafür einen uInt32 nimmt.

Die Verwendung von stdout in diesem Zusammenhang wird aber erst einmal nicht so gehen. LabVIEW und LabVIEW Applikationen sind GUI Applikationen und haben deshalb kein StandardIO. Es gibt zwar die Möglichkeit um mit einem Microsoft Tool die Flags eines GUI Executables zu modifizieren so dass Windows beim Starten auch eine Standard Console für diese Program anlegt. Aber normal ist das sicher nicht und im Fall von LabVIEW wohl normalerweise auch sicher nicht gewünscht.

Rolf Kalbermatter


struct mit char **Parameter in DLL - t4b-1re-2 - 03.09.2007 12:35

Danke euch beiden. Ich hatte schon befürchtet, dass es lediglich über ne WrapperDLL gehen würde. Klingt aber für mich irgendwie schwer nach "Wunschliste".

Viele Grüße
t4b-1re-2