' schrieb:dann ist nämlich genau dieser Datenbereich nach dem Ende des DLL-Knotens nicht mehr verfügbar. Demzufolge ist auch der Pointer darauf sinnlos (respektive sogar falsch). Überall dort, wo ein Draht aufhört, hört auch die "Beständigkeit" der Daten respektive des Speicherbereiches auf. Wenn du in einer DLL auf einen Datenbereich außerhalb der DLL (auch mittels eines Pointers) schreiben willst, so musst du diesen Datenbereich (respektive den Draht) am Ausgang des DLL-Knotens anschließen. Dann sind die Daten nach dem Ende des DLL-Aufrufes noch vorhanden.
Was nicht - nein, das ist nicht wahr - was nur sehr schwierig geht, ist: Der DLL einen Pointer übergeben, sodass die DLL auch dann noch, wenn der DLL-Knoten bereits beendet ist, auf die Daten außerhalb der DLL zugreifen kann. Dann würden praktisch in der DLL ein Thread quasi parallel zu LV laufen.
Okay, ich verstehe. Kurz gesagt, es geht nicht *verdammt*
' schrieb:Wurde sowas nicht in einem anderen Thread hier behandelt - und erfolgreich abgeschlossen?
Wenn da im Prototyp steht "_AIN analogCH" dann ist das eine ganz normale "Variable" (die halt auf 8 Werten U8 oder U32 besteht). Da sollte eine Übergabe von 8 einzelnen Werten funktionieren.
Könnt ihr mit Sicherheit ausschließen, dass das falsch ist?
Das geht aber nicht: Wenn die DLL am Stack 8 Werte erwartet, kannst du ihr nicht einfach nur einen Wert (nämlich einen Pointer auf ein Array. Hast du so?) geben. => Absturz.
Mein Projektpartner hat das gepostet, und es funktioniert "theoretisch" auch, also der Rückegabewert bestätigt einen gültigen Aufruf, jedoch gibt es gewisse Personen welche nicht glauben das ein C-Programm mit 3 Eingangsvariablen mit insgesamt 12 Eingangswerten von LV aus aufgerufen werden kann.
Mit Sicherheit können wir es nicht ausschließen, ginge erst wenn unser GT_GetData funktionieren würde, was laut oben ja unmöglich ist.
' schrieb:Es wird auch ein ewiges bleiben. Irgendwo hat alles seine Grenzen.
Einen Pointer in einer Struktur zu haben, die selbst als Pointer überegben wird, geht nicht. - Zumindest solange nicht, bis ich (oder wer auch immer) das Gegenteil per Sourcecode bewiesen habe. Das hängt damit zusammen, dass ein Datenbereich nur solange gültig ist, wie der Draht dazu existiert. Kein Draht, kein Datenbereich, kein permanenter Pointer.
Und nicht, dass du jetzt denkst, da zieh ich einfach einen Draht auf ein Schieberegister einer Whileschleife. So einfach ist das nicht. Ab einer Verzweigung ist der Darht neu, also ein anderer Speicherbereich. Sowas würde nur mit Ausgängen eines DLL-Knotens gehen.
Hmm... verdammt.
Dennoch danke für die bisherige Hilfe! Ich hoffe wir finden einen Weg das noch irgendwie hinzubekommen!