LabVIEWForum.de - SQL-LV funktioniert als vi, aber nicht als exe

LabVIEWForum.de

Normale Version: SQL-LV funktioniert als vi, aber nicht als exe
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo liebe Leute,

ich verzweifel an einem Problem mit der Free ODBC to LabView Library von Danny Holstein:

Link:
http://sql-lv.sourceforge.net/

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!
Hat das VI denn keinen Fehlerausgang? Evtl. könnte dort stehen was genau das Problem ist.
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.
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.


Da wird´s wohl dran hängen.

Gruß, Marko
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?
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
(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.

Gruß, Marko
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?

Gruß
Freddy
(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.

Gruß, Marko
Es funktioniert, wenn alle *.dll Dateien aus der llb mit in dem Data Ordner der Applikation liegen
Seiten: 1 2
Referenz-URLs