LabVIEWForum.de
Name einer DLL ändern, die in Gebrauch ist. - 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: Name einer DLL ändern, die in Gebrauch ist. (/Thread-Name-einer-DLL-aendern-die-in-Gebrauch-ist)



Name einer DLL ändern, die in Gebrauch ist. - LabYouToo - 13.01.2009 13:01

Hallo zusammen

Bin ganz neu hier und habe schon ein Problem^_^:


Ich arbeite an einem Tool. Dieses Tool soll sogenannte Addons "verwalten" und etwa so aufgebaut sein:

{Bild} {Information} {Start Button} {Remove Button}
{Bild} {Information} {Start Button} {Remove Button}
{Bild} {Information} {Start Button} {Remove Button}
{Bild} {Information} {Start Button} {Remove Button}
...

Wieviele und was für Addons im Tool angzeigt werden, weiss man im Vorherein nicht.
Jetzt liegt die Idee darin, dass jedes Addon als DLL (erzeugt aus LabVIEW) daherkommt, welche einheitlich immer folgende Funktionen anbietet: GetInformation(), GetBild() und StartAddon(). Beim Init arbeitet sich das Tool dann durch alle DLLs im Ordner, indem das Tool jede einzelne DLL in Actual.dll umbenennt und danach Actual.dll->GetInfromation() und Actual.dll->GetBild aufruft. Somit kann mit diesem Funktionsblock alle möglichen Addons angezeigt werden.

Jetzt zum Problem: LabVIEW lässt mich die DLL-Datei nicht in Actual.dll umbennen, da diese durch den späteren Funktionsblock "Aufruf externer Bibliotheken" benutzt wird. ==> LabVIEW: Dateiberechtigungsfehler. (NI-488: DMA-Hardwarefehler festgestellt)

Hat jemand eine Lösung für mein Problem, wie ich xx.dll trotzdem in Actual.dll unbennen kann? Oder ein anderer Lösungsansatz?


Mit bestem Dank und freundlichen Grüssen

Reto


Name einer DLL ändern, die in Gebrauch ist. - TSC - 13.01.2009 13:11

' schrieb:Hallo zusammen

Bin ganz neu hier und habe schon ein Problem^_^:
Ich arbeite an einem Tool. Dieses Tool soll sogenannte Addons "verwalten" und etwa so aufgebaut sein:

{Bild} {Information} {Start Button} {Remove Button}
{Bild} {Information} {Start Button} {Remove Button}
{Bild} {Information} {Start Button} {Remove Button}
{Bild} {Information} {Start Button} {Remove Button}
...

Wieviele und was für Addons im Tool angzeigt werden, weiss man im Vorherein nicht.
Jetzt liegt die Idee darin, dass jedes Addon als DLL (erzeugt aus LabVIEW) daherkommt, welche einheitlich immer folgende Funktionen anbietet: GetInformation(), GetBild() und StartAddon(). Beim Init arbeitet sich das Tool dann durch alle DLLs im Ordner, indem das Tool jede einzelne DLL in Actual.dll umbenennt und danach Actual.dll->GetInfromation() und Actual.dll->GetBild aufruft. Somit kann mit diesem Funktionsblock alle möglichen Addons angezeigt werden.

Jetzt zum Problem: LabVIEW lässt mich die DLL-Datei nicht in Actual.dll umbennen, da diese durch den späteren Funktionsblock "Aufruf externer Bibliotheken" benutzt wird. ==> LabVIEW: Dateiberechtigungsfehler. (NI-488: DMA-Hardwarefehler festgestellt)

Hat jemand eine Lösung für mein Problem, wie ich xx.dll trotzdem in Actual.dll unbennen kann? Oder ein anderer Lösungsansatz?
Mit bestem Dank und freundlichen Grüssen

Reto

kannst du nicht einfach den ursprünglichen namen der dll übergeben anstatt jedes mal umzubenennen?


Name einer DLL ändern, die in Gebrauch ist. - LabYouToo - 13.01.2009 13:16

' schrieb:kannst du nicht einfach den ursprünglichen namen der dll übergeben anstatt jedes mal umzubenennen?

Wie meinst du den ursprünglichen namen der dll übergeben?

Das Problem sehe ich darin, dass LabVIEW schon im voraus die/den Namen der DLLs wissen will, da ich den Funktionsblock "Aufruf externer Bibliotheken" nicht dynamisch mit einem Namen laden kann. Und diese Namen weiss ich beim erstellen des Codes nicht.



vielen Dank für die Antwort!


Name einer DLL ändern, die in Gebrauch ist. - jg - 13.01.2009 13:28

Empfehlung: Upgrade deiner LabVIEW-Version. Wenn ich jetzt nichts falsches erzähle, kannst du seit Version 8.5 (oder doch schon 8.20?) am DLL-Knoten einen Pfad zur zu ladenden DLL im Blockdiagramm angeben. So aus dem Bauch raus müsstest du damit deine Idee verwirklichen können.

Gruß, Jens


Name einer DLL ändern, die in Gebrauch ist. - TSC - 13.01.2009 13:31

' schrieb:Empfehlung: Upgrade deiner LabVIEW-Version. Wenn ich jetzt nichts falsches erzähle, kannst du seit Version 8.5 (oder doch schon 8.20?) am DLL-Knoten einen Pfad zur zu ladenden DLL im Blockdiagramm angeben. So aus dem Bauch raus müsstest du damit deine Idee verwirklichen können.

Gruß, Jens


Bei 8.2.1 gehts nicht. War auch grade verwundert.


Name einer DLL ändern, die in Gebrauch ist. - Y-P - 13.01.2009 13:59

Bei 8.6 geht's.... Dazu Doppelklick auf den "Call Library Function Node" und dann "Specify Path on Diagram" auswählen (Häkchen rein machen).

[attachment=16112]

Gruß Markus


Name einer DLL ändern, die in Gebrauch ist. - jg - 13.01.2009 14:21

' schrieb:Bei 8.6 geht's.... Dazu Doppelklick auf den "Call Library Function Node" und dann "Specify Path on Diagram" auswählen (Häkchen rein machen).

[attachment=43734:Unbenannt.JPG]

Gruß Markus
@Y-P: Logisch, hab ich ja auch so beschrieben...Wink

@LabYouToo: Nachtrag: So wie du dir das denkst, wird das unter LV 8 nicht funktionieren. LV lädt meines Wissens nach bei Programmstart im Sourcecode als (mglw.) benötigt deklarierte DLLs in den Speicher. Damit ist dann ein Umbenennen nicht mehr möglich, da haut dann Windows dazwischen.

Gruß, Jens


Name einer DLL ändern, die in Gebrauch ist. - LabYouToo - 13.01.2009 14:48

' schrieb:@Y-P: Logisch, hab ich ja auch so beschrieben...Wink

@LabYouToo: Nachtrag: So wie du dir das denkst, wird das unter LV 8 nicht funktionieren. LV lädt meines Wissens nach bei Programmstart im Sourcecode als (mglw.) benötigt deklarierte DLLs in den Speicher. Damit ist dann ein Umbenennen nicht mehr möglich, da haut dann Windows dazwischen.

Gruß, Jens


Vielen Dank für Eure Bemühungen!!! Werde mich mal um eine neuere LV Version kümmern.

Gruss, Reto