' 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.
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