LabVIEWForum.de
DLL findet andere DLL nicht. Wie einbinden? - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: DLL & externer Code (/Forum-DLL-externer-Code)
+---- Thema: DLL findet andere DLL nicht. Wie einbinden? (/Thread-DLL-findet-andere-DLL-nicht-Wie-einbinden)



DLL findet andere DLL nicht. Wie einbinden? - pga - 11.08.2011 10:47

Hallo zusammen,
ich benutze gerade zum ersten mal Labview und komme nicht so recht weiter. Leider konnten mir Google und die Forensuche nicht weiter helfen.

Ich habe eine DLL ohne Header-Datei. In der Doku sind die Funktionen beschrieben, sodass ich die DLL mittels Call Lib Function Node einbinden kann. Einige Funktionsaufrufe funktionieren auch, allerdings benötigt eine bestimmte Funktion eine weitere DLL. vi-Datei und die beiden DLLs liegen alle im selben Verzeichnis. Muss ich die DLL noch in ein Labview-Verzeichnis kopieren?
Leider habe ich keinerlei Header, sodass das Einbinden via Labview "import" flach fällt.

Viele Grüße,
Philipp


RE: DLL findet andere DLL nicht. Wie einbinden? - pga - 11.08.2011 13:44

Ich habe die DLL ist den System32 Ordner kopiert. Nun funktioniert es.

Beste Grüße


RE: DLL findet andere DLL nicht. Wie einbinden? - rolfk - 11.08.2011 13:50

(11.08.2011 10:47 )pga schrieb:  Hallo zusammen,
ich benutze gerade zum ersten mal Labview und komme nicht so recht weiter. Leider konnten mir Google und die Forensuche nicht weiter helfen.

Ich habe eine DLL ohne Header-Datei. In der Doku sind die Funktionen beschrieben, sodass ich die DLL mittels Call Lib Function Node einbinden kann. Einige Funktionsaufrufe funktionieren auch, allerdings benötigt eine bestimmte Funktion eine weitere DLL. vi-Datei und die beiden DLLs liegen alle im selben Verzeichnis. Muss ich die DLL noch in ein Labview-Verzeichnis kopieren?
Leider habe ich keinerlei Header, sodass das Einbinden via Labview "import" flach fällt.

Viele Grüße,
Philipp

Abhängige DLLs werden nicht von LabVIEW geladen sondern von Windows wenn LabVIEW das Laden der Haupt-DDL verlangt. Windows sucht nur in folgenden Orten:

1) Wenn die DLL mit dem Namen schon im Speicher ist, dann wird die verwendet.
2) Ansonsten wird im Applikationsverzeichnis geschaut (das ist wo LabVIEW.exe ist)
3) Dann wird im Windows Verzeichnis geschaut
4) Danach im System Verzeichnis
5) Zuletzt in allen Verzeichnissen die in der PATH Environment Variablen aufgeführt sind.

3) und 4) fallen eigentlich aus für einen sauberen Lösungsansatz da man nicht unnötigerweise DLLs in diese Verzeichnisse legen sollte

Daher bieten sich folgende Lösungsansätze an:

1) Das Verzeichnis wo die DLL ist in die PATH Variable mitnehmen
2) Die DLL in das Verziechnis kopieren wo LabVIEW.exe ist, wenn Du dann eine Applikation baust musst Du nicht vergessen diese DLL explizit in das Verzeichnis zu installieren wo <myapp>.exe liegt.
3) Durch ein LabVIEW VI eine der Funktionen der DLL in den Speicher laden, bevor das, VI das die andere DLL benötigt geladen wird. Dieses VI würde nicht ausgeführt sondern sorgt nur dafür dass die DLL schon im Speicher ist wenn das andere VI die DLL zu laden versucht.


RE: DLL findet andere DLL nicht. Wie einbinden? - gottfried - 12.08.2011 07:22

Hallo Rolfk,

toll - danke für diese Zusammenfassung!

Gottfried