LabVIEWForum.de - Name einer DLL ändern, die in Gebrauch ist.

LabVIEWForum.de

Normale Version: Name einer DLL ändern, die in Gebrauch ist.
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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
' 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?
' 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!
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
' 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.
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
' 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
' 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
Referenz-URLs