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 

Wie funktioniert Einbindung eines dynamischen VIs in eine EXE wirklich?



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!

23.07.2008, 13:53
Beitrag #11

Y-P Offline
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
LVF-Team

Beiträge: 12.612
Registriert seit: Feb 2006

Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN

71083
Deutschland
Wie funktioniert Einbindung eines dynamischen VIs in eine EXE wirklich?
Obwohl,.... Ich kapiere noch nicht ganz, wieso ich dann in Bsp. 4 den Pfad so exakt angeben muss........ Das müsste doch dann auch richtig in die EXE mit kompiliert werden. Bei den anderen beiden Bsp. sind die VIs doch auch durch die EXE im Speicher, d.h. der Pfad wurde automatisch angelegt.

Gruß Markus

' schrieb:Ich auch. Wink

Gruß Markus

--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
23.07.2008, 14:11
Beitrag #12

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.692
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Wie funktioniert Einbindung eines dynamischen VIs in eine EXE wirklich?
' schrieb:Ich kapiere noch nicht ganz, wieso ich dann in Bsp. 4 den Pfad so exakt angeben muss........ Das müsste doch dann auch richtig in die EXE mit kompiliert werden.
Im Bild in Beitrag 4 ist es ja eben so gewollt, dass das VI tatsächlich erst genau zu dem Zeitpunkt geladen wird, wenn der Eigenschaftsknoten (Methodenknoten?) abgearbeitet werden soll.

Ein applikationsspezifischer Ablauf könnte so sein: Programm fragt Benutzer, wo denn ein VI zu finden ist, das jetzt gleich abgearbeitet werden soll. Das VI kann z.B. eines sein zur Berechnung einer Passwortes. Der Benutzer sagt dem Programm dann: benutze jetzt genau dieses eine VI, das du in dieser Library findest. Dann holt sich das Programm (respektive die RT-Umgebung) erst die Library (LoadLibrary) und dann aus dieser Library die Referenz auf das gewünschte VI. Da der Benutzer erst zur Laufzeit festlegt, welches VI verwendet werden soll, kann es zur Kompilierzeit nicht eingebunden werden. So ein Verfahren müsste mal halt anwenden, wenn der Kunde das Verschlüsselungs-VI einfach nicht herausgeben will.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
23.07.2008, 15:01 (Dieser Beitrag wurde zuletzt bearbeitet: 23.07.2008 15:02 von Y-P.)
Beitrag #13

Y-P Offline
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
LVF-Team

Beiträge: 12.612
Registriert seit: Feb 2006

Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN

71083
Deutschland
Wie funktioniert Einbindung eines dynamischen VIs in eine EXE wirklich?
Danke Euch für die Infos.
Jetzt ist mir manches klarer geworden, auch wenn ich es noch nicht 100 % kapiert habe, aber die Hauptsache ist, man weiß, wie man es anwenden muss. TippenBig Grin

Gruß Markus

--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.07.2008, 13:29
Beitrag #14

RoLe Offline
LVF-Guru
*****


Beiträge: 1.236
Registriert seit: Jul 2007

-
1997
en

0
Schweiz
Wie funktioniert Einbindung eines dynamischen VIs in eine EXE wirklich?
' schrieb:Eine LV-EXE ist eigentlich eine erweiterte LLB. Du kannst deine.exe in deine.llb umbennen und mit LV die LLB öffnen.
zur Info:
Da ich im Moment alles von 7.1 auf 8.2.1 konvertiere (wegen Vista), habe ich bemerkt, dass das in 8.2.1 nicht mehr geht.

.·´¯)--> Leben ist das, was dir passiert, wenn du eifrig dabei bist andere Pläne zu machen <--(¯`·.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
30.07.2008, 07:18
Beitrag #15

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Wie funktioniert Einbindung eines dynamischen VIs in eine EXE wirklich?
' schrieb:So genau weiß ich das auch nicht. Aber:

Es gibt solche dynamische und solche. Die einen, siehe dein rechtes Bild oben, werden per "Always included" eingebunden und sind daher praktisch ohne Pfad aufrufbar. Solche VIs sind eigenlich nicht richtig dynamisch. Dynamisch sind sie eigentlich nur deswegen, weil sie applikationsspezifisch explizit über "VI-Server" (für SubPanel etc.) aufgerufen werden. Solche VI's werden zur Kompilierzeit eingebunden.

Dann gibt es aber auch solche dynamische VIs, die tatsächlich erst dann eingebunden werden, wenn sie im Programmablauf eben genau jetzt aufgerufen werden sollen. Solche VI's werden dann zur Kompilierzeit eben nicht eingebunden. Dann aber ist der Pfad wichtig. Für was man dieser Verfahrten braucht, weiß ich jetzt nicht. Ich hab sowas noch nie gebraucht.

Für DLL's in C++/Delphi gilt ähnliches: Linken zur Programmstartzeit und Linken per Programmbefehl LoadLibrary.
Ich glaube wir warten mal auf RolfK.

Big Grin

Also das Ganze ist nicht so komplex. Wenn die Open VI Reference Funktion ausgeführt wird macht sie ungefähr folgendes:

Wenn der VI Name nur ein String ist:

1) Schauen im Speicher ob so ein VI schon geladen ist.
2) Schauen im EXE ob da ein solches VI besteht
3) Schauen im Search Path (normalerwise leer in einer Build App aber man kann die entsprechenden INI keys in das zugehörige INI File tun).

Wenn's dann noch nicht geht dann gibts halt einen Error.

Wenn der VI name ein Path ist:

1) Für absolute Pfade zuerst mal schauen ob das VI am ensprechenden Ort liegt.
2) das selbe tun was bei einem String Namen passiert wobei der Filename ohne Pfad als Suchkriterium gilt.

Und jetzt kommts:

In LabVIEW 8.5 bekommt man einen ganz spezifischen Fehler wenn man einen Pfad benützt während das VI schon im Speicher ist. Der Fehler besagt dass es nicht mehr zulässig ist ein VI mit Pfad zu laden wenn es schon im Speicher anwesend ist. Ich denke mal dass das ein Feature ist das hinzugefügt wurde um das Crosslinking in LabVIEW schwerer zu machen und als Hilfe für das entsprechende neue Tool in LabVIEW 8.5 um das Auflösen solcher Crosslinks zu erleichtern.

Rolf Kalbermatter

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
30.07.2008, 07:26
Beitrag #16

Y-P Offline
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
LVF-Team

Beiträge: 12.612
Registriert seit: Feb 2006

Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN

71083
Deutschland
Wie funktioniert Einbindung eines dynamischen VIs in eine EXE wirklich?
Wenn ich aber bei dem Bsp. in Beitrag 4 nicht den richtigen Pfad angebe, klappt es nicht.
Darum habe ich ja die Cases für Entwicklungsumgebung und für die EXE.
Wie ich Dich verstanden habe, müsste LabVIEW doch einfach suchen.

Gruß Markus

--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
30.07.2008, 16:51
Beitrag #17

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Wie funktioniert Einbindung eines dynamischen VIs in eine EXE wirklich?
' schrieb:Wenn ich aber bei dem Bsp. in Beitrag 4 nicht den richtigen Pfad angebe, klappt es nicht.
Darum habe ich ja die Cases für Entwicklungsumgebung und für die EXE.
Wie ich Dich verstanden habe, müsste LabVIEW doch einfach suchen.

Gruß Markus

Wenn ich das Problem von Dir richtig verstanden habe, vor 8.5 ja, jetzt aber nicht mehr.

Rolf Kalbermatter

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
31.07.2008, 07:07
Beitrag #18

Y-P Offline
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
LVF-Team

Beiträge: 12.612
Registriert seit: Feb 2006

Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN

71083
Deutschland
Wie funktioniert Einbindung eines dynamischen VIs in eine EXE wirklich?
Musste ich vor 8.5 richtig anschließen und jetzt nicht mehr, oder was meinst Du?

Gruß Markus

' schrieb:Wenn ich das Problem von Dir richtig verstanden habe, vor 8.5 ja, jetzt aber nicht mehr.

Rolf Kalbermatter

--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
31.07.2008, 07:21
Beitrag #19

rolfk Offline
LVF-Guru
*****


Beiträge: 2.305
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Wie funktioniert Einbindung eines dynamischen VIs in eine EXE wirklich?
' schrieb:Musste ich vor 8.5 richtig anschließen und jetzt nicht mehr, oder was meinst Du?

Gruß Markus

Andersum! Ein Kollege von mir der das LuaVIEW Toolkit entwickelt hat, hatte damit Probleme. Dort werden teilweise Hintergrundtasks dynamisch geladen. Im Entwicklungssystem ist das kein Problem da die VIs physisch auf der Disk sind von wo sie auch per Pfad geladen werden. In einem Executable gings aber nur wenn statt einem Pfad nur der VI Name als String angegeben wurde, da 8.5 sich weigert VIs von anderswo auf der Disk (hier innerhalb der LLB im EXE) zu laden dann was der Pfad angibt. In dieser Hinsicht ist es wahrscheinlich auch nicht mehr einfach wahr, dass bei Übergabe eines absoluten Pfades und wenn das VI dort nicht wirklich besteht, die Searchpaths automatisch durchforstet werden.

Und die andere Differenz ist dass wenn Du ein VI in 8.5 per Pfad laden willst das schon im Speicher ist, dies nur funktioniert wenn der angegebene Pfad mit dem wirklichen Pfad des bereits geladenen VIs übereinstimmt.

Rolf Kalbermattter

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
31.07.2008, 07:33
Beitrag #20

Y-P Offline
☻ᴥᴥᴥ☻ᴥᴥᴥ☻
LVF-Team

Beiträge: 12.612
Registriert seit: Feb 2006

Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN

71083
Deutschland
Wie funktioniert Einbindung eines dynamischen VIs in eine EXE wirklich?
Alles klar. Jetzt hab' ich's kapiert.
Vielen Dank für die Infos.

Gruß Markus

' schrieb:Andersum! Ein Kollege von mir der das LuaVIEW Toolkit entwickelt hat, hatte damit Probleme. Dort werden teilweise Hintergrundtasks dynamisch geladen. Im Entwicklungssystem ist das kein Problem da die VIs physisch auf der Disk sind von wo sie auch per Pfad geladen werden. In einem Executable gings aber nur wenn statt einem Pfad nur der VI Name als String angegeben wurde, da 8.5 sich weigert VIs von anderswo auf der Disk (hier innerhalb der LLB im EXE) zu laden dann was der Pfad angibt. In dieser Hinsicht ist es wahrscheinlich auch nicht mehr einfach wahr, dass bei Übergabe eines absoluten Pfades und wenn das VI dort nicht wirklich besteht, die Searchpaths automatisch durchforstet werden.

Und die andere Differenz ist dass wenn Du ein VI in 8.5 per Pfad laden willst das schon im Speicher ist, dies nur funktioniert wenn der angegebene Pfad mit dem wirklichen Pfad des bereits geladenen VIs übereinstimmt.

Rolf Kalbermattter

--------------------------------------------------------------------------
Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  buildete EXE funktioniert nicht, funktioniert dinamic dispatching in EXE überhaupt? robert_bors 9 9.591 04.02.2013 16:01
Letzter Beitrag: robert_bors
  Aufruf von dynamischen VIs aus EXE freakhome 2 6.076 07.01.2011 01:11
Letzter Beitrag: freakhome
  Problem bei dynamischen Laden des reentrant VI in einer EXE pericles 2 5.836 21.07.2010 10:39
Letzter Beitrag: macmarvin

Gehe zu: