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 

dll aus Fortran90



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!

18.10.2007, 18:53 (Dieser Beitrag wurde zuletzt bearbeitet: 08.12.2007 12:28 von jg.)
Beitrag #1

Aleph1 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 51
Registriert seit: Sep 2005

7.1 + 8.6.1
2005
de_en

69120
Deutschland
dll aus Fortran90
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)


Angehängte Datei(en) Thumbnail(s)
   

Sonstige .vi  dll_Problem.vi (Größe: 8 KB / Downloads: 241)

Sonstige .txt  dll_Problem.txt (Größe: 192 Bytes / Downloads: 276)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
19.10.2007, 17:05
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
dll aus Fortran90
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

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.10.2007, 07:47 (Dieser Beitrag wurde zuletzt bearbeitet: 22.10.2007 07:50 von rolfk.)
Beitrag #3

rolfk Offline
LVF-Guru
*****


Beiträge: 2.302
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
dll aus Fortran90
' 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

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
22.10.2007, 11:44
Beitrag #4

Aleph1 Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 51
Registriert seit: Sep 2005

7.1 + 8.6.1
2005
de_en

69120
Deutschland
dll aus Fortran90
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
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: