06.09.2017, 13:06
Beitrag #1
|
|
|
06.09.2017, 13:34
(Dieser Beitrag wurde zuletzt bearbeitet: 06.09.2017 13:34 von GerdW.)
Beitrag #2
|
GerdW
______________
Beiträge: 17.465
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: fehlende SubVIs in exe
Hallo logosh,
herzlich willkommen im Forum!
Wo genau holst du die VIs her, die da nachgeladen werden?
Ich nutze üblicherweise zwei Möglichkeiten:
1. Die nachzuladenden VIs liegen in einem Verzeichnis auf der Festplatte - mitsamt aller von ihnen benötigten subVIs.
2. Die nachzuladenden VIs befinden sich auch schon im Executable, dann sorgt der AppBuilder dafür, dass die benötigten subVIs ebenfalls in der EXE inkludiert sind.
|
|
|
06.09.2017, 13:39
Beitrag #3
|
Freddy
Oldtimer
Beiträge: 729
Registriert seit: Aug 2008
2019, 2020, 2021
1996
DE
76275
Deutschland
|
RE: fehlende SubVIs in exe
Hallo Logosh,
zwei Sachen fallen mir spontan ein.
1. Wenn Du den Installer verwendest musst Du Kategorie -> Fortgeschritten -> Systemvorraussetzung = "Mindestens Windows7 SP1" setzten
2. Beim Compiler Kategorie -> Fortgeschritten -> den Haken bei "Fehlersuche aktivieren" entfernen.
Gruß
Freddy
|
|
|
06.09.2017, 13:54
(Dieser Beitrag wurde zuletzt bearbeitet: 06.09.2017 14:15 von Logosh.)
Beitrag #4
|
Logosh
LVF-Neueinsteiger
Beiträge: 3
Registriert seit: May 2017
2010 + 2016
2013
DE
|
RE: fehlende SubVIs in exe
(06.09.2017 13:34 )GerdW schrieb: Hallo logosh,
herzlich willkommen im Forum!
Wo genau holst du die VIs her, die da nachgeladen werden?
Ich nutze üblicherweise zwei Möglichkeiten:
1. Die nachzuladenden VIs liegen in einem Verzeichnis auf der Festplatte - mitsamt aller von ihnen benötigten subVIs.
2. Die nachzuladenden VIs befinden sich auch schon im Executable, dann sorgt der AppBuilder dafür, dass die benötigten subVIs ebenfalls in der EXE inkludiert sind.
Hallo Gerd,
die VI´s liegen auf der Festplatte, mit den SubVI´s. Zumindest denen, die ich erstellt hab. Die die mir fehlen, sind unter Abhängigkeiten -> vi.lib zu finden gewesen.
Hab die mal aus dem Projekt entfernt, konnte kompilieren, hat aber nichts genützt.
Diese Space Constant.vi so heißt auch die Leerzeichenkonstante unter String.
Hab die nach zu ladenden VI´s auch im App Builder unter "immer enthalten"
(06.09.2017 13:39 )Freddy schrieb: Hallo Logosh,
zwei Sachen fallen mir spontan ein.
1. Wenn Du den Installer verwendest musst Du Kategorie -> Fortgeschritten -> Systemvorraussetzung = "Mindestens Windows7 SP1" setzten
2. Beim Compiler Kategorie -> Fortgeschritten -> den Haken bei "Fehlersuche aktivieren" entfernen.
Gruß
Freddy
Hallo Freddy,
Punkt 2 hat geholfen, aber umgekehrt. Harken reingemacht und dann ging es. Cool. Vielen Dank.
Find das aber trotzdem komisch.
|
|
|
06.09.2017, 14:35
(Dieser Beitrag wurde zuletzt bearbeitet: 06.09.2017 14:36 von GerdW.)
Beitrag #5
|
GerdW
______________
Beiträge: 17.465
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: fehlende SubVIs in exe
Hallo logosh,
Zitat:Punkt 2 hat geholfen, aber umgekehrt. Harken reingemacht und dann ging es. Cool. Vielen Dank. Big Grin
Find das aber trotzdem komisch.
Durch das Aktivieren der Debuggingunterstützung werden mehr VIs in das Executable mit hineingenommen, deshalb finden die VIs ihre subVIs. (Meine Interpretation.)
Eine saubere Lösung ist das aber nicht…
Zitat:sind unter Abhängigkeiten -> vi.lib zu finden gewesen.
Eigentlich sollten alle Abhängigkeiten, auch die aus der vi.lib, in einem Executable landen - wenn die entsprechenden aufrufenden VIs auch im Executable sind.
Wenn du das VI aber von einem Pfad außerhalb der EXE nachlädst, dann weiß die RuntimeEngine nicht unbedingt, wo deine LabVIEW-IDE ihre vi.lib verwaltet und kann deshalb diese subVIs nicht finden. (Meine Interpretation der Fehlerbeschreibung.)
Wie ich oben sagte: die aufzurufenden VIs müssen mitsamt aller benötigten subVIs nachgeladen werden können!
Eine Möglichkeit dazu: das nachzuladende VI mitsamt seiner kompletten Hierarchie an einen neuen Ort speichern…
|
|
|
11.09.2017, 15:16
Beitrag #6
|
Logosh
LVF-Neueinsteiger
Beiträge: 3
Registriert seit: May 2017
2010 + 2016
2013
DE
|
RE: fehlende SubVIs in exe
Hallo zusammen,
ja ganz sauber ist das echt nicht, mal geht es mal nicht. Die Frage jetzt wäre, wie kann ich den eigenständig laufende VI´s in ein Main VI einbinden? Das ist nämlich genau das was ich versuche. Notifire hab ich schon drin, auch mit Stop, aber wie bekomme ich die verlinkt? das die auch gestartet werden???
|
|
|
11.09.2017, 15:36
Beitrag #7
|
jg
CLA & CLED
Beiträge: 15.864
Registriert seit: Jun 2005
20xx / 8.x
1999
EN
Franken...
Deutschland
|
RE: fehlende SubVIs in exe
Eine Möglichkeit:
Alle VIs, die du dynamisch aufrufst, im Application Builder unter "Always Included" hinzufügen. Dann musst du aber mglw. den Aufrufpfad anpassen, den die VIs sind ja dann innerhalb der Exe mit abgelegt.
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.
|
|
|
06.07.2019, 21:52
Beitrag #9
|
Trinitatis
LVF-Guru
Beiträge: 1.694
Registriert seit: May 2008
7.1 / 8.0 /2014-1, 18
2002
DE
18055
Deutschland
|
RE: fehlende SubVIs in exe
(11.09.2017 15:16 )Logosh schrieb: ... Die Frage jetzt wäre, wie kann ich den eigenständig laufende VI´s in ein Main VI einbinden? ...
Also ich mache das immer so, dass ich die Sub-VIs im Main in eine Casestruktur lege, die auf FALSE steht, so dass diese VIs geladen aber nicht ausgeführt werden. Man darf an diese Casestruktur nur keine FALSE-Konstante anschließen, weil der APPB sie dann nicht einbindet, weil er ja schlau ist.
Man muss also ein BOOL-CTRL nehmen, das auf dem Panel nicht erreicht werden kann.
Wenn du dieses Sub-VI dann irgendwo mit dem Aufruf über "open VI-Reference" aufrufst, dann darf nicht der VI-Pfad, sondern nur der VI-Name angegeben werden.
(s. Hilfe: "VI-Pfad kann entweder der Name des VIs oder der vollständige Pfad des VIs sein. Wenn Sie das VI anhand seines Namens angeben, muss dieser mit dem vollständigen Namen des VIs im Speicher auf dem ausgewählten Rechner übereinstimmen. Bei Pfadangaben wird im Arbeitsspeicher nach einem VI gesucht, das vorher von diesem Pfad geladen wurde. Wenn kein VI im Speicher gefunden wird, versucht LabVIEW, das VI von der Festplatte zu laden. Bei Fehlen des VIs oder bei Konflikten mit anderen VIs im Speicher wird eine Fehlermeldung ausgegeben")
Die Sub-VIs dieses VIs werden automatisch mit in die EXE eingebunden.
Gruß, Marko
|
|
|
07.07.2019, 08:37
(Dieser Beitrag wurde zuletzt bearbeitet: 07.07.2019 08:38 von achim @ FZK.)
|
achim @ FZK
CLD
Beiträge: 117
Registriert seit: Nov 2008
201x
2005
DE_EN
76861
Deutschland
|
RE: fehlende SubVIs in exe
(06.07.2019 21:52 )Trinitatis schrieb: (11.09.2017 15:16 )Logosh schrieb: ... Die Frage jetzt wäre, wie kann ich den eigenständig laufende VI´s in ein Main VI einbinden? ...
Also ich mache das immer so, dass ich die Sub-VIs im Main in eine Casestruktur lege, die auf FALSE steht, so dass diese VIs geladen aber nicht ausgeführt werden. Man darf an diese Casestruktur nur keine FALSE-Konstante anschließen, weil der APPB sie dann nicht einbindet, weil er ja schlau ist.
Man muss also ein BOOL-CTRL nehmen, das auf dem Panel nicht erreicht werden kann.
Also ein Control und eine CaseStruktur zu verwenden um dynamisch geladene VIs
in die Exe zu zwingen klingt mehr als schräg! Mag gehen, ist aber kein guter Stil.
Normalerweise macht man das über die BuildSpec. Ich glaube unter sourcen, gibt man das zu startende VI an und unten dran gibt es eine Liste "always included". Da gehören die VIs und übrigens alles andere auch (DLL, XMLs oder was man sonst noch so verarbeitet) rein.
|
|
|
| |