LabVIEWForum.de
Knoten zum Aufruf externer Bibliotheken - 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: Knoten zum Aufruf externer Bibliotheken (/Thread-Knoten-zum-Aufruf-externer-Bibliotheken)



Knoten zum Aufruf externer Bibliotheken - xtro - 04.07.2006 07:13

Guten morgen

Ich habe folgendes Problem und hoffe jemand wäre so nett mir zu helfen.
Ich habe ein VI geschrieben welches ich als .dll im Aplikationbuilder erzeugt habe.

Jetzt will ich diese .dll über ein "Knoten zum Aufruf externer Bibliotheken" aufrufen.
Doch jetzt kommt folgendes Problem die .dll enthält Cluster also Strukturen unter C doch finde ich diese nicht nur Strings,numerisch,active X,Signalverlauf,Array aber leider kein aufruf von Strukturen.

Beim Application Builder stand folgendes
Void void Alarm(TD1*errorout,TD1*errorin,*unsigned char RID,unsigned char DeviceNode)

Aber finde nirgends TD1 beim "Knoten zum Aufruf externer Bibliotheken"

Und wie ruft man in dem Selben Eine Visa Resource auf

Vielen Dank im voraus


Knoten zum Aufruf externer Bibliotheken - Y-P - 04.03.2007 17:04

Hallo,

ich verstehe nicht ganz, wieso Du aus einem VI eine .dll machst, nur um diese .dll, dann wieder umständlich in einem VI aufzurufen.
Reicht Dir da nicht ein SubVI?

Gruß Markus

' schrieb:Guten morgen

Ich habe folgendes Problem und hoffe jemand wäre so nett mir zu helfen.
Ich habe ein VI geschrieben welches ich als .dll im Aplikationbuilder erzeugt habe.

Jetzt will ich diese .dll über ein "Knoten zum Aufruf externer Bibliotheken" aufrufen.
Doch jetzt kommt folgendes Problem die .dll enthält Cluster also Strukturen unter C doch finde ich diese nicht nur Strings,numerisch,active X,Signalverlauf,Array aber leider kein aufruf von Strukturen.

Beim Application Builder stand folgendes
Void void Alarm(TD1*errorout,TD1*errorin,*unsigned char RID,unsigned char DeviceNode)

Aber finde nirgends TD1 beim "Knoten zum Aufruf externer Bibliotheken"

Und wie ruft man in dem Selben Eine Visa Resource auf

Vielen Dank im voraus



Knoten zum Aufruf externer Bibliotheken - rolfk - 12.06.2007 15:28

' schrieb:Guten morgen

Ich habe folgendes Problem und hoffe jemand wäre so nett mir zu helfen.
Ich habe ein VI geschrieben welches ich als .dll im Aplikationbuilder erzeugt habe.

Jetzt will ich diese .dll über ein "Knoten zum Aufruf externer Bibliotheken" aufrufen.
Doch jetzt kommt folgendes Problem die .dll enthält Cluster also Strukturen unter C doch finde ich diese nicht nur Strings,numerisch,active X,Signalverlauf,Array aber leider kein aufruf von Strukturen.

Beim Application Builder stand folgendes
Void void Alarm(TD1*errorout,TD1*errorin,*unsigned char RID,unsigned char DeviceNode)

Aber finde nirgends TD1 beim "Knoten zum Aufruf externer Bibliotheken"

Und wie ruft man in dem Selben Eine Visa Resource auf

Vielen Dank im voraus

Was Du tun willst geht zwar prinzipiel, aber der Nutzen ist wie schon eher erwähnt fragwürdig.

Verwende in der Konfiguration zum DLL Aufrufknoten den Adapt to Type (oder eine entsprechende deutsche Übersetzung wenn Du ein deutsches LabVIEW verwendest) für diesen Parameter.

Dann musst Du natürlich auch sicherstellen, das die verwendete Clusterdefinition sowohl im DLL-VI wie im Aufruf-VI exakt gleich ist, sonst ziemlich sicher -> Crash, aber garantiert Unsinn.

Und da diese DLL dann sehr spezifisch LabVIEW Datentypen gebraucht ist eine Verwendung von einer anderen Umgebung heraus meist mühsam bis sinnlos. Also warum dann die Mühe überhaupt?

Rolf Kalbermatter


Knoten zum Aufruf externer Bibliotheken - petit_spirou - 26.09.2007 09:42

' schrieb:Und da diese DLL dann sehr spezifisch LabVIEW Datentypen gebraucht ist eine Verwendung von einer anderen Umgebung heraus meist mühsam bis sinnlos. Also warum dann die Mühe überhaupt?

Rolf Kalbermatter

Ich hätte eine Anmerkung zu Deiner letzten Aussage:
Ich könnte mir vorstellen eine DLL aus LV-Code zuerstellen, um meine Anwendung zu modularisieren: d.h. wenn in einer Funktion, die
in der DLL vorhanden ist, ein Fehler korrigiert wird, dass man dann nicht die Anwendung komplett neu erstellt, sondern nur die DLL austauscht. Oder gibt es da bessere Möglichkeiten?


Knoten zum Aufruf externer Bibliotheken - rolfk - 28.09.2007 06:32

' schrieb:Ich hätte eine Anmerkung zu Deiner letzten Aussage:
Ich könnte mir vorstellen eine DLL aus LV-Code zuerstellen, um meine Anwendung zu modularisieren: d.h. wenn in einer Funktion, die
in der DLL vorhanden ist, ein Fehler korrigiert wird, dass man dann nicht die Anwendung komplett neu erstellt, sondern nur die DLL austauscht. Oder gibt es da bessere Möglichkeiten?
Dasselbe ist prinzipiel mit externen VIs zu erreichen, die Du via VI Server dynamisch (Call by Reference) aufrufst. Da gibt es zwar ein paar nicht so schöne Probleme beim Gebrauch von (strict) typedef Controls die sowohl in der externen Componenete vorkommen als auch in der aufrufenden Applikation selbst wenn sie denselben Namen benützen. Das Problem hast Du aber bei einer LabVIEW DLL innerhalb einer LabVIEW Applikation ebenso, also das bringt keinen wirklichen Vorteil.

Ansonsten ist der Weg über ein DLL Interface eigentlich nur:
1) Langsamer (der extra DLL Interface Overhead ist zwar nicht erschreckend bei Gebrauch von LabVIEW Datentypen aber trotzdem)
2) Komplizierter
3) Keine Datentypencompatibilitätscheck zur Laufzeit, also wenn Du einen String an einen Parameter gibst der ein Array oder noch etwas anderes erwartet -> Crash
4) Umständlicher dann ein VI oder eine VI Library.

Rolf Kalbermatter