INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

VIs aus DLL aufrufen



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

24.11.2011, 10:41
Beitrag #1

Trinitatis Offline
LVF-Guru
*****


Beiträge: 1.694
Registriert seit: May 2008

7.1 / 8.0 /2014-1, 18
2002
DE

18055
Deutschland
VIs aus DLL aufrufen
Hallo Zusamman,

vielleicht kann mir ja hier jemand helfen:

Ich habe eine DLL aus verschiedenen VIs und deren Sub-VIs erstellt. Diese DLL (für eine Kundenapplikation) soll nun immer bei einem Update beim Kunden ausgetauscht werden (Soll also auch eine DLL bleiben). In dieser DLL befinden sich verschiedene Unterprogramme (Tools) mit eigenem Frontpanel. In LV 8.0 habe ich mit der Funktion "VI-Referenz öffnen" auf den Pfad der DLL und dem darin befindlichen aufzurufenden VI verwiesen und mit der Methode "VI ausführen" dieses Tool gestartet. Ich habe die DLL bei der Pfadzuweisung behandelt, als wäre sie ein Verzeichnis, was auch funktionierte.
In LV 2011 funktioniert das nicht mehr auf diese Weise, da hier die DLL nicht mehr wie ein Verzeichnis behandelt wird - hier kann ich nur mit dem Knoten "Aufruf externer Bibliotheken" arbeiten, habe aber dort das Problem, dass das aufrufende VI solange bei diesem Knoten stehen bleibt, bis das aufgerufene VI wieder geschlossen wurde. Ich möchte aber nacheinander verschiedene Tools aus dieser DLL aufrufen und das aufrufende VI soll nach diesen Aufrufen auch noch einiges tun, quasi parallel zu den Tools.

Weiß da jemand Rat, wie ich das mit einer DLL realisieren kann?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
24.11.2011, 10:47 (Dieser Beitrag wurde zuletzt bearbeitet: 24.11.2011 10:48 von jg.)
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: VIs aus DLL aufrufen
Nur so eine Idee:
Erstellst du die DLL in 2011 auch mit gesetzter 8.x File-Layout Option? Damit du weiterhin eine flache Verzeichnisstruktur hast?
   
Ich tippe mal, dass dann der Aufruf so wie in 8.0 wieder funktionieren könnte.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.11.2011, 11:24 (Dieser Beitrag wurde zuletzt bearbeitet: 24.11.2011 11:27 von rolfk.)
Beitrag #3

rolfk Offline
LVF-Guru
*****


Beiträge: 2.302
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: VIs aus DLL aufrufen
(24.11.2011 10:47 )jg schrieb:  Nur so eine Idee:
Erstellst du die DLL in 2011 auch mit gesetzter 8.x File-Layout Option? Damit du weiterhin eine flache Verzeichnisstruktur hast?

Ich tippe mal, dass dann der Aufruf so wie in 8.0 wieder funktionieren könnte.

Gruß, Jens

Eher nicht! Die Möglichkeit um VI's aus einem Executable (und eine DLL ist in diesem Sinn auch ein Executable) aus LabVIEW mittels Pfad aufrufen zu können wurde von einigen Fanatisten als schwerstes Sicherheitsrisiko angesehen, da jemand dann deren ach so wertvolle "Intelectual Property" auf diese Weise stehlen könnte. NI hat darauf reagiert und in LabVIEW 8.2 glaube ich, diese Möglichkeit schlichtweg unmöglich gemacht und eine Revision dieser Massnahme ist höchst unwahrscheinlich.

Bis in LV 2009 ist es aber trivial um so ein Executable noch wie ein ZIP File zu öffnen (wenn man das neue Executable Layout verwendet).

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.11.2011, 11:55
Beitrag #4

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: VIs aus DLL aufrufen
Wie sieht es aus, bei einer Exe geht es ja, bei installiertem LV-Webservice das FP eines VIs aufzurufen und zu bedienen.
Vielleicht geht das auch bei einer DLL?!

Gruß, Jens

P.S.: Wie immer danke an Rolf für diese tiefen LV-Einblicke. Top1

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.11.2011, 12:57
Beitrag #5

Trinitatis Offline
LVF-Guru
*****


Beiträge: 1.694
Registriert seit: May 2008

7.1 / 8.0 /2014-1, 18
2002
DE

18055
Deutschland
RE: VIs aus DLL aufrufen
Gibt es denn überhaupt irgend eine Möglichkeit, aus einer DLL heraus nacheinander verschiedene VIs zu öffnen, ohne dass das aufrufende VI bei jedem Aufruf stehenbleibt?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
25.11.2011, 10:52 (Dieser Beitrag wurde zuletzt bearbeitet: 25.11.2011 10:54 von rolfk.)
Beitrag #6

rolfk Offline
LVF-Guru
*****


Beiträge: 2.302
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: VIs aus DLL aufrufen
(24.11.2011 12:57 )Trinitatis schrieb:  Gibt es denn überhaupt irgend eine Möglichkeit, aus einer DLL heraus nacheinander verschiedene VIs zu öffnen, ohne dass das aufrufende VI bei jedem Aufruf stehenbleibt?

Ich weiss es nicht sicher. Der erste Schritt wäre natürlich um die Call Library Node als reentrant zu konfigurieren, aber ich wage es zu bezweifeln dass damit alle Probleme beseitigt sind. Die "richtige" Weise dazu ist um eben nicht eine DLL zu benützen, da LabVIEW sowohl in der Call Library Node als auch im C Wrapper der innerhalb der DLL um jedes exportierte VI gestrickt wird, ziemliche Klimmzüge macht um zwischen dem LabVIEW orientierten Parameterinterface im Heap und dem C orientierten Parameterinterface auf dem Stack zu vermitteln.

Alternativen dazu sind entweder LabVIEW LLBs oder wenn es eine neuere LabVIEW Version sein darf, die VI Libraries.

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: