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 

VI mit .net dll's funktioniert nur als exe, nicht im Entwicklungsmodus



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!

27.01.2012, 08:25 (Dieser Beitrag wurde zuletzt bearbeitet: 27.01.2012 08:33 von rolfk.)
Beitrag #2

rolfk Offline
LVF-Guru
*****


Beiträge: 2.317
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
RE: VI mit .net dll's funktioniert nur als exe, nicht im Entwicklungsmodus
Zwar bringst Du selber die Vermutung nach vorne, dass es sich um ein Pfadproblem mit den DLLs handeln könnte, aber dann lieferst Du keinerlei Informationen dazu wie denn dieses Pfad Layout im Project und im Executable aussieht.

.Net hat sehr spezifische Ideen wo eine DLL sein muss dass es sie selber finden kann. Das ist nämlich entweder im Global Assembly Cache (GAC) oder im Ordner, in dem das Executable liegt, das den aktuellen Prozess gestartet hat. LabVIEW fügt da innerhalb der Entwickelumgebung selber noch explizit den Ordner hinzu in dem das aktuelle Projectfile liegt. Im Executable Fall, ist dies der data Folder in dem normalerweise alle nicht VI Files abgespeichert werden.

Wenn Du also im Project alle Deine zig DLLs einfügst aber irgendwo in der VI Hierarchy belässt, wird LabVIEW zwar von .Net verlangen um die direkt in LabVIEW Nodes aufgerufenen .Net DLLs von dem absoluten Path zu laden den Du beim Erstellen der Node angegeben hast, aber alle indirekt abhängigen DLLs muss .Net selber finden und laden, und kann sie nicht finden. Dass die Top Level Komponente sich dabei aufhängt statt einen Fehler zu produzieren ist allerdings ein Programmierfehler in der Top Level Komponente.

Und Deine Vermutung dass es etwas mit dem LabVIEW Compiler zu tun hat ist garantiert falsch. LabVIEW VIs werden vor der ersten Ausführung und nach jeder Änderung automatisch kompiliert. Der Applikation Builder ist eigentlich nur ein Linker/Packer. Er nimmt alle VIs, stript die nicht mehr benötigten Diagramme, Frontpanel und andere Dinge, packt diese in ein File, das dann mit einem Executable Wrapper versehen wird. Dazu kopiert er auch noch alle anderen vorgebenen nicht VI FIles, wie Dokumente, DLLs und dergleichen in die in der Buildkonfiguration angegebenen Ordner. Zudem werden eventuelle Anpassungen an Pfadverweise gemacht um VIs dahingehende anzupassen, dass sie zum Beispiel DLLs von dem Ordner lädt, wo der Builder sie im Executable hinkopiert.

Da Du wahrscheinlich alle DLLs in Deinem Project aufführst kopiert LabVIEW sie beim Erstellen eines Executables ALLE in den Data Folder, et voila! .Net kann sie plötzlich finden, wenn Du das Executable startest.

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 


Nachrichten in diesem Thema
RE: VI mit .net dll's funktioniert nur als exe, nicht im Entwicklungsmodus - rolfk - 27.01.2012 08:25

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Einbindung DLL funktioniert nicht Schrankwand 1 4.579 10.03.2023 18:50
Letzter Beitrag: GerdW
  HWND auslesen, funktioniert nicht mit jedem PC Mischa E 10 13.976 23.04.2012 13:31
Letzter Beitrag: rolfk
  GetSnapshot-Funktion funktioniert in While-Schleife nicht richtig labrat 6 8.557 09.02.2012 09:26
Letzter Beitrag: Hook1986
  WinAPI Aufruf funktioniert nicht unter Win7 Lessy2205 5 8.834 15.11.2011 13:03
Letzter Beitrag: Lessy2205

Gehe zu: