LabVIEWForum.de
dll aus Fortran90 - 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: dll aus Fortran90 (/Thread-dll-aus-Fortran90)



dll aus Fortran90 - Aleph1 - 18.10.2007 18:53

Hallo Leute,
ich bin wahrscheinlich einfach zu dämlich, aber ich bekomme es absolut nicht hin eine von mir in Fortran90 erstellte dll -Datei in LV (Version 7.1.1) einzubinden, deshalb wäre ich mal wieder froh, wenn mir jemand helfen könnte.
Das ganze ist nur eine kleine Proberoutine anhand derer ich das dll-Zeugs lernen möchte. Später soll eine "etwas" größere Berechnungsroutine eingebunden werden. Aber ich wills erst mal an diesem kleinen Beispiel lernen.
Also der Reihe nach:
Ich habe die *.f90 Datei ohne Fehlermeldung oder Warnung mit dem "DIGITAL Visual Fortran Compiler 6" erstellen können. Und obwohl das ganze so simpel aussieht bekomme ich fast nen Flash da ich immer die beigefügte Fehlermeldung bei der Ausführung des VIs bekomme.
Ich wäre wirklich ultradankbar, wenn jemand mal einen kurzen Blick auf mein Problem werfen könnte. Ich dreh fast schon am Rad.
Ich muss dazu sagen, dass ich zwar das LV-Tutorial "Using External Code in LV" angelesen habe, ich aber meinen Fehler nicht finden kann. Die Doku zu meinem Compiler hab ich auch gelesen. Ob ichs verstanden hab, weiß ich nicht. Ich bin leider auch auf dem dll Gebiet ein blutiger Anfänger.
Die angefügte *.txt Datei enthält meine 5 Zeilen Code in FORTRAN90 und hat eigentlich die Endung *.f90.
Mir ist deshalb jeder auch noch so kleine Hinweis willkommen.

Gruß
Karl

(VI LV 7.1)


dll aus Fortran90 - jg - 19.10.2007 17:05

Was ich nicht so ganz verstehe: Deine Variable N wird als Real(4) (denke, dass entspricht Single in LV) definiert. Dann natürlich auch den Parameter so übergeben!! Und wieso N überhaupt übergeben, wenn du dann N=5.0 setzt?

Ansonsten, doch auch bitte die dll mit hochladen.

MfG, Jens


dll aus Fortran90 - rolfk - 22.10.2007 07:47

' schrieb:Ich muss dazu sagen, dass ich zwar das LV-Tutorial "Using External Code in LV" angelesen habe, ich aber meinen Fehler nicht finden kann. Die Doku zu meinem Compiler hab ich auch gelesen. Ob ichs verstanden hab, weiß ich nicht. Ich bin leider auch auf dem dll Gebiet ein blutiger Anfänger.
Die angefügte *.txt Datei enthält meine 5 Zeilen Code in FORTRAN90 und hat eigentlich die Endung *.f90.
Mir ist deshalb jeder auch noch so kleine Hinweis willkommen.

Also mit Fortran kann ich Dir absolut nicht helfen. Kann knapp begreifen was die Funktion tut, aber mit den Parametern haperts ganz enorm. Wie Jens schon sagte wenn Du einen Real übergeben willst solltest Du das auch so tun.

Des weiteren sind Dinge wichtig wie:
Ist dieser Parameter als Zahl oder als Pointer darauf übergeben?
Ist die Callingconvention stdcall oder cdecl?
Gibt die Funktion noch irgenwas zurück und was denn?
etc

Den Fehler den Du siehst besagt, dass das was Du LabVIEW erzählt hast um zu tun nicht mit dem übereinstimmt was der Fortran Compiler erzeugte Code erwartet. Das kann ein falscher Parametertyp sein, ein uninitalisiertes oder ungenügend grosses Array (hier wohl nicht wie mir scheint zumindest sehe ich keinerlei Array in die Funktion oder heraus gehen), falsche calling convention, Bug im Fortran Compiler, etc. etc.

Also Fortran wäre wirklich das Letzte das ich noch lernen möchte um ein Problem zu lösen. Dann noch lieber Visual Basic --würg--! ^_^

Rolf Kalbermatter


dll aus Fortran90 - Aleph1 - 22.10.2007 11:44

Hallo Rolf, hallo Jens
danke für eure Hilfe. Ich weiß, dass mein Programm so keinen Sinn ergibt, ich wollte einfach nur herausfinden wie man die Wertübergabe in eine dll gestaltet.
In der Zwischenzeit habe ich einige Sachen herausgefunden und mein Problem hat sich etwas reduziert. Ich kann jetzt einzelne Werte (keine Arrays) an meine dll-Datei übergeben und auslesen.
Ich bin allerdings noch nicht am Ziel und muss noch etwas herumprobieren. Wenn ich alles herausgefunden hab was ich wissen wollte, schreib ich was dazu ins Forum.

Dank und Gruß
Karl


' schrieb:Also mit Fortran kann ich Dir absolut nicht helfen. Kann knapp begreifen was die Funktion tut, aber mit den Parametern haperts ganz enorm. Wie Jens schon sagte wenn Du einen Real übergeben willst solltest Du das auch so tun.

Des weiteren sind Dinge wichtig wie:
Ist dieser Parameter als Zahl oder als Pointer darauf übergeben?
Ist die Callingconvention stdcall oder cdecl?
Gibt die Funktion noch irgenwas zurück und was denn?
etc

Den Fehler den Du siehst besagt, dass das was Du LabVIEW erzählt hast um zu tun nicht mit dem übereinstimmt was der Fortran Compiler erzeugte Code erwartet. Das kann ein falscher Parametertyp sein, ein uninitalisiertes oder ungenügend grosses Array (hier wohl nicht wie mir scheint zumindest sehe ich keinerlei Array in die Funktion oder heraus gehen), falsche calling convention, Bug im Fortran Compiler, etc. etc.

Also Fortran wäre wirklich das Letzte das ich noch lernen möchte um ein Problem zu lösen. Dann noch lieber Visual Basic --würg--! ^_^

Rolf Kalbermatter