LabVIEWForum.de - Rückgabezeiger bei DLL-Funktionen

LabVIEWForum.de

Normale Version: Rückgabezeiger bei DLL-Funktionen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Forum-Gemeinde,

ich bin nicht nur neu im Forum, sondern auch neu was Labview betrifft.
Ich komme aus der "klassischen Programmierung" C++, ...

Ein versierter Kollege und ich haben einen Zwispalt bezüglich Zeiger und DLL:

Eine DLL-Funktion benötigt einen Zeiger auf einen Integer und liefert, auch über diesen Parameter in der Funktion, den zweiten Rückgabewert.
Im DLL-Funktionsobjekt steht in der Konfiguration des Parameters der Wert auf Zeiger.
Meine Auffassung ist es nun, dass eine Variable dem Parameter der Funktion zugewiesen werden muss (rechte Seite Objekt), da die DLL-Funktion diesen Wert als Adresse nutzt und den rückzuliefernden Wert dorthin schreibt. Den Wert kann ich nach Funktionsablauf dann auf der rechten Seite des DLL-Funktions-Objektes in Labview abgreifen.
Kurz: ich muss dem DLL-Funk.-Objekt auch eine Variable links zuweisen, damit Speicher für die DLL bereit gestellt wird.

Mein Kollege meint, es sei nicht nötig. Es reicht, wenn nur von der rechten Seite der Parameter abgefragt wird. Das "Vornedran" erledigt LV selbst.

Wer hat recht?

Schöne Grüße,

Stefan
(21.12.2011 14:26 )TR6 schrieb: [ -> ]Hallo Forum-Gemeinde,

ich bin nicht nur neu im Forum, sondern auch neu was Labview betrifft.
Ich komme aus der "klassischen Programmierung" C++, ...

Ein versierter Kollege und ich haben einen Zwispalt bezüglich Zeiger und DLL:

Eine DLL-Funktion benötigt einen Zeiger auf einen Integer und liefert, auch über diesen Parameter in der Funktion, den zweiten Rückgabewert.
Im DLL-Funktionsobjekt steht in der Konfiguration des Parameters der Wert auf Zeiger.
Meine Auffassung ist es nun, dass eine Variable dem Parameter der Funktion zugewiesen werden muss (rechte Seite Objekt), da die DLL-Funktion diesen Wert als Adresse nutzt und den rückzuliefernden Wert dorthin schreibt. Den Wert kann ich nach Funktionsablauf dann auf der rechten Seite des DLL-Funktions-Objektes in Labview abgreifen.
Kurz: ich muss dem DLL-Funk.-Objekt auch eine Variable links zuweisen, damit Speicher für die DLL bereit gestellt wird.

Mein Kollege meint, es sei nicht nötig. Es reicht, wenn nur von der rechten Seite der Parameter abgefragt wird. Das "Vornedran" erledigt LV selbst.

Wer hat recht?

Schöne Grüße,

Stefan

Das ist versionsabhängig! Für Skalars (und nur für Skalars) macht LabVIEW das in aktuellen Versionen tatsächlich. In älteren Versionen hättest Du damit aber Pech. Für Arrays und Strings macht LabVIEW das aber nur wenn es auch entsprechend in der Konfiguration festgelegt wurde. Auch hier bestand diese Möglichkeit in älteren Versionen überhaupt nicht und musste man es explizit machen. Ich bin ein Befürworter von expliziter Programmierung solcher Dinge. Dann hast Du eine Möglichkeit weniger warum es krachen könnte wenn man zwischen LabVIEW Versionen hin und her geht.
Hallo Rolf,

Danke für Deine Antwort.

Das scheint dann auch unser Problem zu bestätigen.

Das momentane LV-Programm ist in LV 8.5 geschrieben und der DLL-Funktion wird KEINE Variable mitgegeben an der Stelle (linke Seite kein Eingabefeld an den Objekteingang angeschlossen). Es gibt Probleme bezüglich dieser DLL-Funktion. Das Programm läuft, steigt aber nach einiger Zeit aus an der Stelle aus.

Schöne Grüße,

Stefan
Referenz-URLs