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 

Mal wieder ein DLL Problem



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!

14.03.2007, 09:44
Beitrag #1

benny Offline
LVF-Grünschnabel
*


Beiträge: 16
Registriert seit: Feb 2007

8.5, 8.22
2007
de_en

80801
Deutschland
Mal wieder ein DLL Problem
Hallo zusammen,

ich habe das Problem das bei jedem LabVIEWneustart die DLL einfach nicht mehr ausgeführt wird. Erst nachdem ich die Call Library Function Nodes neu Konfiguriere in dem ich einfach den Dateinamen neu angebe. Merkwürdig ist ist daß die Pfad und Dateiangabe vorher schon richtig dastand - aber scheinbar doch nicht richtig erkannt wurde.

Weiß jemand Rat???

Danke im voraus.

Gruß

Benny


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
14.03.2007, 23:04
Beitrag #2

Falk Offline
ja, das bin ich...
***


Beiträge: 343
Registriert seit: Jan 2006

8.0 :: 201x ::202x
2006
DE_EN


Deutschland
Mal wieder ein DLL Problem
' schrieb:Hallo zusammen,

ich habe das Problem das bei jedem LabVIEWneustart die DLL einfach nicht mehr ausgeführt wird. Erst nachdem ich die Call Library Function Nodes neu Konfiguriere in dem ich einfach den Dateinamen neu angebe. Merkwürdig ist ist daß die Pfad und Dateiangabe vorher schon richtig dastand - aber scheinbar doch nicht richtig erkannt wurde.

Weiß jemand Rat???

Danke im voraus.

Gruß

Benny


Hallo Benny!

ich persönlich werde nicht ganz schlau von welcher Dateiangabe du sprichst? Meinst du in der Konfiguration den Pfad auf die DLL oder einen Pfad als Eingabeparameter der DLL?

Schöne Grüsse
Falk

Currently: zzzZZZZZZZZ
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.03.2007, 08:40
Beitrag #3

benny Offline
LVF-Grünschnabel
*


Beiträge: 16
Registriert seit: Feb 2007

8.5, 8.22
2007
de_en

80801
Deutschland
Mal wieder ein DLL Problem
Ich meine den Pfad auf die DLL. Ich hab mal versucht die DLL ins VI-Verzeichnis zu kopieren aber daß wars irgendwie auch nicht?Sad
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.03.2007, 08:55
Beitrag #4

dc6xs Offline
registered alien
****


Beiträge: 762
Registriert seit: Aug 2006

6.1,7.00
2006
kA

79106
Sonstige
Mal wieder ein DLL Problem
' schrieb:Ich meine den Pfad auf die DLL. Ich hab mal versucht die DLL ins VI-Verzeichnis zu kopieren aber daß wars irgendwie auch nicht?Sad
Hast du vielleicht vergessen im Bedinpanel nach dem Einstellen des Pfades, mit einem Rechtsklick -> Datenoperationen -> Aktuellen Wert als Standard zu übernehmen?

Gruß, Rob

Bitte Beachten:
Die obenstehenden Texteile können unter Umständen Sarkasmus und Ironie enthalten, für nicht erkannten Sarkasmus oder nicht erkannte Ironie wird keine Haftung übernommen.

N.B.:
"Multiple exclamation marks, " he went on, shaking his head, "are a sure sign of a deseased mind." - Terry Pratchett
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
15.03.2007, 09:37
Beitrag #5

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Mal wieder ein DLL Problem
' schrieb:Hast du vielleicht vergessen im Bedinpanel nach dem Einstellen des Pfades, mit einem Rechtsklick -> Datenoperationen -> Aktuellen Wert als Standard zu übernehmen?
Gruß, Rob
Ich glaube, er meint nicht den Pfad, den er als String an die DLL übergibt. Er hat glaub ich ein Problem mit dem Namen der DLL, der ja beim Konfigurieren des Knotens angegeben werden muss.

@benny:
Kann es sein, dass sich die DLL ändert, während LV geschlossen ist - z.B. weil sie programmtechnisch angepasst wird?
Kann es sein, dass der DLL-Name ungünstige Zeichen enthält - z.B. Spaces und mehrfach Punkte ? (ich kann zwar nicht glauben, dass das was ausmacht, aber man weis ja nie)

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.07.2007, 08:15
Beitrag #6

Torsten-fhm Offline
LVF-Neueinsteiger


Beiträge: 1
Registriert seit: Jul 2006

7.1, 8.0, 8.2, 8.5, 8.6
2006
kA


Deutschland
Mal wieder ein DLL Problem
' schrieb:Ich glaube, er meint nicht den Pfad, den er als String an die DLL übergibt. Er hat glaub ich ein Problem mit dem Namen der DLL, der ja beim Konfigurieren des Knotens angegeben werden muss.

@benny:
Kann es sein, dass sich die DLL ändert, während LV geschlossen ist - z.B. weil sie programmtechnisch angepasst wird?
Kann es sein, dass der DLL-Name ungünstige Zeichen enthält - z.B. Spaces und mehrfach Punkte ? (ich kann zwar nicht glauben, dass das was ausmacht, aber man weis ja nie)


Ich habe das gleiche Problem.

Es reicht auch nicht aus unter "Konfigurieren" den Pfad mit "OK" zu bestätigen, sondern die DLL muss über "Suchen" geöffnet werden, obwohl der Pfad immer richtig ist.
Auch nach dem Abspeichern tritt das Problem beim nächsten Neustart von LV (7.1) auf.
Der Dateiname ist nach folgendem Format: xxxx_xx.dll
Mein Vorgänger hat bereits ausprobiert die Datei in verschiedenen Unterverzeichnissen von LabVIEW zu kopieren.

Würde mich sehr freuen, wenn mir jemand weiterhelfen kann. Danke!

Gruß, Torsten
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
11.07.2007, 09:33
Beitrag #7

rolfk Offline
LVF-Guru
*****


Beiträge: 2.302
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Mal wieder ein DLL Problem
' schrieb:Ich habe das gleiche Problem.

Es reicht auch nicht aus unter "Konfigurieren" den Pfad mit "OK" zu bestätigen, sondern die DLL muss über "Suchen" geöffnet werden, obwohl der Pfad immer richtig ist.
Auch nach dem Abspeichern tritt das Problem beim nächsten Neustart von LV (7.1) auf.
Der Dateiname ist nach folgendem Format: xxxx_xx.dll
Mein Vorgänger hat bereits ausprobiert die Datei in verschiedenen Unterverzeichnissen von LabVIEW zu kopieren.

Würde mich sehr freuen, wenn mir jemand weiterhelfen kann. Danke!

Gruß, Torsten

Hmm, ich werde da echt nicht schlau draus. Mache sehr regelmässig Dinge mit DLLs und habe das noch nie gesehen. Welche LabVIEW Version ist das?

Kannst auch mal versuchen nur den DLL Namen selbst anzugeben und die DLL(s) in das Verzeichnis zu kopieren in dem LabVIEW.EXE steht. Wenn das hilft und Du willst später eine Applikation machen musst Du sicher stellen dass der Applikation Builder die DLL mit einbindet. Normal tut er das automatisch und legt sie dann default im data Unterverzeichnis innerhalb des Verzeichnisses in dem die Applikation zu stehen komt ab. Das sollte so gehen obwohl ich alle DLLs die in meinen LabVIEW Applikationen gebraucht werden vorzugsweise im gleichen Verzeichnis zu haben in dem auch das Executable selber ist.

Rolf Kalbermatter

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
26.07.2007, 10:52
Beitrag #8

RoLi Offline
LVF-Neueinsteiger


Beiträge: 8
Registriert seit: Jul 2007

6.1 und 7.0
1997
kA

31135
Deutschland
Mal wieder ein DLL Problem
' schrieb:Ich meine den Pfad auf die DLL. Ich hab mal versucht die DLL ins VI-Verzeichnis zu kopieren aber daß wars irgendwie auch nicht?Sad

Ich kenne ein ähnliches Problem aus LV6:

Ich hatte ein Program MAIN.vi entworfen, in dem für verschiedene Treiber
gleichlautende VIs für gleiche Funktionen verwendet werden sollten,
nur der Verzeichnisname sollte geändert werden.

Bsp:
<blockquote>Verzeichnis Hardware1 enthält: open.vi, close.vi, send.vi ...
Verzeichnis Hardware2 enthält: open.vi, close.vi, send.vi ...
...</blockquote>
Dann wollte ich die VIs programmgesteuert mit "Open VI Reference.vi" auswählen und ausführen.
LV6 hat dann aber immer die VIs aus dem Verzeichnis (z.B. Hardware1) ausgewählt,
das beim letzten Abspeichern von MAIN.vi in LV6 verwendet worden war: keine Fehlermeldung oder so..
Mein Workaround bestand darin, die VIs in den Verzeichnissen unterschiedlich zu benennen:

Bsp:
<blockquote>Verzeichnis Hardware1 enthält: open1.vi, close1.vi, send1.vi ...
Verzeichnis Hardware2 enthält: open2.vi, close2.vi, send2.vi ...
...</blockquote>
Seitdem klappt das programmgesteuerte Ausführen mit "Open VI Reference.vi" problemlos

Grüsse,

RoLi
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
27.07.2007, 12:23
Beitrag #9

benny Offline
LVF-Grünschnabel
*


Beiträge: 16
Registriert seit: Feb 2007

8.5, 8.22
2007
de_en

80801
Deutschland
Mal wieder ein DLL Problem
Was für ein Zufall. Hab mich heute erst wieder damit befasst Big Grin

Gelöst hab ich das Problem leider immer noch nicht. Es scheint so als ob die DLL andere DLLs verwendet. (geht das? Ich kenn mich da gar nicht aus). Auf jedenfall funktionierts wenn ich daß VI in einem Verzeichniss ausführe in dem sich auch die DLL befindet (nicht umgekehrt). Allerdings darf dass nicht die Lösung sein da ich nicht meine Programme woanders abspeichern möchte. Wenn das jemand löst - bitte Posten.

Danke im voraus!

Gruß
Benny
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
03.08.2007, 21:47
Beitrag #10

rolfk Offline
LVF-Guru
*****


Beiträge: 2.302
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Mal wieder ein DLL Problem
' schrieb:Was für ein Zufall. Hab mich heute erst wieder damit befasst Big Grin

Gelöst hab ich das Problem leider immer noch nicht. Es scheint so als ob die DLL andere DLLs verwendet. (geht das? Ich kenn mich da gar nicht aus).

Ja das geht nicht nur sondern ist ausser für extrem triviale DLLs beinahe unvermeidbar. Meist geht es minimal um ein paar WinAPI DLLs die aber bei Windows sowieso schon dabei sind. Aber eine DLL kann beliebig viele andere DLLs referenzieren und wenn das statisch gemacht wird, kann das Laden der primären DLL durch LabVIEW nur funktionieren, wenn auch alle abhängigen DLLs von Windows gefunden werden. Hier hat LabVIEW aber eben überhaupt keinen Einfluss darauf. Alles was LabVIEW tun kann ist Windows sagen dass es DLL XYZ laden soll und Windows versucht dann alle Abhängigkeiten aufzulösen. Wenn eine davon nicht auflösbar ist für Windows dann sagt Windows zu LabVIEW einfach Ätsch! und verweigert das Laden der DLL und basta.
Es ist denkbar dass das daher kommt dass im gleichen Verzeichnis Deiner DLL die Du in LabVIEW benützen willst noch andere DLLs die von dieser DLL benützt werden liegen. Nachdem Du im Windows FileDialog die DLL angewiesen hat, speichert dieser FileDialog das zuletzt benützte Directory für Deinen Prozess ab und möglicherwiese benützt Windows zusätzlich zu den dokumentierten Pfaden um DLLs zu finden auch noch diesen zuletzt benützten Pfad (Current Directory) um Abhängigkeiten aufzulösen. Das könnte erklären warum es bei Dir immer nach dem Starten zuerst einmal falsch geht da beim Starten einer Applikation das Current Directory durch Windows auf den Ort gesetzt wird wo das Executable sich befindet (und Deine DLLs sich eben nicht befinden).

Das ist aber alles Windows spezifisch und LabVIEW hat da absolut keinen Einfluss darauf.

Rolf Kalbermatter

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
30
Antwort schreiben 


Gehe zu: