LabVIEWForum.de - Problem beim erstellen einer EXE mit dll

LabVIEWForum.de

Normale Version: Problem beim erstellen einer EXE mit dll
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo

Ich habe ein LV Programm welches auf eine .net dll zugreift! Mit LV Funktioniert das Programm ohne Probleme! Aber sobald ich eine .EXE daraus mache findet er die dll nicht mehr! Habe die dll als supported Files in der Exe eingebunden! Der Aufruf der dll mache ich mit einem Constructor Node, da kann man über Browse den Assembly angeben aber weiss nicht ob dieser Pfad Absolut oder Relativ ist vieleicht ist ja dies das Problem!?

Ich hoffe es kann mir jemand weiter helfen!!
Hi,

was sich auf jeden Fall ändert ist der Pfad deiner Exe! Dazu gibts hier im Forum schon jede Menge Threads! Liegts evtl. daran?

Wenn du die DLL mit ins Projektverzeichnis (also den Ordner der Exe) kopierst, sollte sie aber trotzdem automatisch gefunden werden!

Gruß
Achim
Danke für deine Antwort!!
Also die DLL habe ich im Projekt eingebunden!
Wie meinst du das mit dem Pfad der EXE?





' schrieb:Hi,

was sich auf jeden Fall ändert ist der Pfad deiner Exe! Dazu gibts hier im Forum schon jede Menge Threads! Liegts evtl. daran?

Wenn du die DLL mit ins Projektverzeichnis (also den Ordner der Exe) kopierst, sollte sie aber trotzdem automatisch gefunden werden!

Gruß
Achim
Gibt doch im DLL-Knoten die DLL mal ohne Pfad, nur den DLL-Namen an.

Warum der Pfad in einer EXE anders ist, findest du mit SUCHEN.

Gruss
Roland
Die DLL gebe ich ja im Constructor Node an! Da weiss ich ja nicht ob dies ein Absoluter oder Realtiver Pfad ist!?
Hier mal das SubVI und die DLL!!

LV8.5
Upps, das ist ja was anderes mit .NET, sorry.

Da kenne ich mich nicht so aus.
Aber deine DLL muss ja irgendwie im System registriert sein und dann findet LV diese auch, oder nicht ?

Sorry kann nicht weiterhelfen
Gruss
Roland
' schrieb:Danke für deine Antwort!!
Also die DLL habe ich im Projekt eingebunden!
Wie meinst du das mit dem Pfad der EXE?

Im Projekt einbinden ist nicht genug. LabVIEW weiss dann zwar dass da eine DLL ist und kopiert die auch freundlich in Deine Applikation aber typischerweise in eine Unterverzeichnis Data, innerhalb des Applikationsordners.
.Net hat aber eine ganz spezifische Suchfolgorde wenn eine .Net DLL angefragt wird. Und die ist zuerst im gleichen Verzeichnis wo die EXE steht die den aktuellen Prozess erzeugt hat (und eben nicht ein Data Unterverzeichnis) und wenn das nichts bringt im GAC (Global Assembly Cache).

Und schimpf jetzt bitte nicht dass LabVIEW default ein Data Verzeichnis verwendet um Support Files hineinzulegen. Das ist recht smart und funkts auch meist perfekt, sogar mit normalen DLLs da LabVIEW dort den Suchpfad selber noch mitbeinflussen kann. .Net DLLs sind aber etwas völlig anderes und .Net will das gerne alles selber tun und lässt Beinflussung des Ladens von .Net DLLs nur mit ziemlichem Aufwand zu, wobei dann oft andere .Net Features nur schwer oder gar nicht zu unterstützen sind.

Also ganz einfach den Target Pfad deiner .Net DLL in der Build Spec so anpassen dass er ins gleiche Verzeichnis kommt wie Dein Exe. Dann sollte es gehen, zumindest wenn Du alle anderen (.Net) Dlls die diese .Net DLL benützt auch auf Deinem Rechner hast.

Rolf Kalbermatter
Referenz-URLs