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!
Alles funktioniert einwandfrei, wenn ich das vi direkt in LabVIEW starte. Erzeuge ich jedoch eine exe, dann erhalte ich den Fehler "Fehler 5001 bei Invalid Reference, sql-lv could't connect".
Bereits im ersten Schritt liefert sql_open.vi als refnum eine "0", wenn ich die exe ausführe. Das entsprechende vi liefert eine funktionierende refnum.
Ich verwende LabVIEW 2017 auf einem Windows 10 Rechner und die neueste Version von sql-lv, um damit über ODBC auf eine Firebird-Datenbank zuzugreifen.
Auf dem angehängten Bild sieht man ein Minimalbeispiel zur Verdeutlichung des Problems. Im Vordergrund ist die exe, die als refnum "0" ausgibt. Im Hintergrund sind Blockdiagramm und Frontpanel des entsprechenden VIs, das eine gültige refnum ausgibt.
Ich wäre so dankbar, wenn mir jemand weiterhelfen könnte!
RE: SQL-LV funktioniert als vi, aber nicht als exe
Doch, es hat einen Fehlerausgang. Dieser gibt aber keinen Fehler aus, der Status ist angeblich ok und entsprechend gibt auch keine weiteren Hinweise auf einen Fehler. Erst die nachfolgenden VIs beschweren sich dann über die "invalid reference".
Ich habe das Minimalbeispiel um ein Anzeigelement erweitert, das den Errorcluster anzeigt (siehe angehängter Screenshot). Außerdem habe ich das Blockdiagramm von sql_open.vi angehängt.
RE: SQL-LV funktioniert als vi, aber nicht als exe
Hallo Hendrik,
das Problem wird wie fast immer, wenn das VI funktioniert, die EXE aber nicht, in einer Pfadzuweisung liegen.
Lass dir mal auf dem Frontpanel den Pfad der Funktion "Application directory" in VI und dann in der EXE ausgeben.
Die LV-Hilfe sagt: Wenn Sie dieses VI von einer eigenständigen Anwendung aus aufrufen, gibt dieses VI den Pfad zu dem Ordner aus, in dem sich die Anwendung befindet.
Wenn Sie dieses VI von der Entwicklungsumgebung aus aufrufen und das VI in eine LabVIEW-Projektdatei (*.lvproj) geladen ist, gibt das VI den Pfad zum Ordner der Projektdatei aus. Bei einem ungespeicherten Projekt gibt das VI <Kein Pfad> aus.
Wenn sich das Haupt-VI nicht in einem Projekt befindet, gibt das VI den Pfad zum Verzeichnis des VIs aus. Bei einem ungespeicherten VI gibt das VI <Kein Pfad> aus.
RE: SQL-LV funktioniert als vi, aber nicht als exe
Den Fehler hab ich am Anfang wirklich auch gemacht. Er hat dazu geführt, dass eine dll nicht gefunden wurde und das Programm nicht ausführbar war. Das Problem habe ich aber behoben. Ich denke der Fehler liegt jetzt woanders, weil das Minimalbeispiel ja auch ohne jede Fehlermeldung ausgeführt wird. Die ausgegebene refnum stimmt nur nicht.
Oder kann es trotzdem daran liegen?
20.03.2020, 08:15 (Dieser Beitrag wurde zuletzt bearbeitet: 20.03.2020 08:34 von 83Daniel.)
RE: SQL-LV funktioniert als vi, aber nicht als exe
Ich habe es bei mir zum laufen gebracht, indem ich einfach alle Dateien des sql-lv mit zur Exe kopiert habe... welche jetzt bei dir genau fehlt, kann ich nicht sagen
RE: SQL-LV funktioniert als vi, aber nicht als exe
(20.03.2020 01:01 )Trinitatis schrieb: Lass dir mal auf dem Frontpanel den Pfad der Funktion "Application directory" in VI und dann in der EXE ausgeben.
Hallo Hendrik,
hast du das mal ausprobiert?
Dann siehst du, ob die DLL korrekt aufgerufen wird.
RE: SQL-LV funktioniert als vi, aber nicht als exe
Hallo Trinitatis,
Zitat:Make (Windows):
Edit Makefile.mak, make sure the library paths for LabView, MySQL, and optional functions are correct.
Build with "nmake -f Makefile.mak"
Note: ODBC turned on automatically for Windows build
64-bit:
You're on your own -- I only have worked with 32 bit versions of LabView. Contact me if you have difficulty, I'll help where I can.
So stehts (nur Ausschnitt) auf der Download Seite hast Du das überprüft?
RE: SQL-LV funktioniert als vi, aber nicht als exe
(23.03.2020 10:44 )Freddy schrieb: ...
So stehts (nur Ausschnitt) auf der Download Seite hast Du das überprüft?
Gruß
Freddy
Hallo Freddy,
ich habe nix überprüft. Wenn aber eine DLL aufgerufen wird, was im VI klappt und in der EXE nicht, dann kann man ja erstmal prüfen, ob der Aufrufpfad zur DLL überhaupt der erwartete ist.