WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

G95 mexa64 files compilierung geht aber ausfuehrung?

 

IchEinGast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.08.2011, 08:42     Titel: G95 mexa64 files compilierung geht aber ausfuehrung?
  Antworten mit Zitat      
Hallo,

nach ewigem suchen habe ich einen g95 compiler in 64 Bit als binary gefunden. Ich versuche die in fortran geschriebenen programme also über
g95 mit mex zu übersetzen. dazu habe ich meine mexopts.sh datei editiert und benutze folgende konfig:

Code:

 FC='/home/<ich>/Software/g95/g95-install/bin/x86_64-unknown-linux-gnu-g95'
            FFLAGS="-fPIC"
            LD="$COMPILER"
            LDEXTENSION='.mexa64'
            LDFLAGS="-shared"
 


die kompilierung läuft über mex -v -I<pfad zu includes> datei.f durch und ein datei.mexa64 file wird erstellt.

Wenn ich aber nun aber das korrespondierende Matlab file was den fortran code aufrufen soll starte ganz normal über den matlab befehl der funktion ( Z = foo(A,0) ) kommt eine fehlermeldung des fortran codes mit

Code:

??? Error using ==> foo
Two input arguments required.

Error in ==> foo at 52
[Z]=foo(A,drlf);
 


obwohl ich ja 2 argumente benutze und die funktion mit 2 argumenten aufrufe. selbst der wert von nargin ist 2.

Versteht jemand was hier vor sich geht? Ich begreife absolut nicht wo mein Fehler liegt. Mache ich was in der Kompilierung falsch? Ich habe noch nie mex-files übersetzt und gestartet. Das Matlab-Beispiel mit yprime habe ich gemacht und das geht auch.

Danke euch.


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.08.2011, 19:11     Titel:
  Antworten mit Zitat      
Hallo,

von Seiten von Mathworks werden nur bestimmte Compiler unterstützt. Schau doch mal, ob der von dir verwendete (bei deinem Release) in der Liste enthalten ist.

Falls nicht, wird das von Mathworks nicht offiziell unterstützt - was aber nicht heißen muss, dass es nicht funktioniert.

Vorschlag: wandle yprime mal in ein primitives Programm mit zwei Eingabeargumenten um. Wenn das klappt, versuche das in dein Programm zu übernehmen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 14.08.2011, 18:08     Titel:
  Antworten mit Zitat      
Hallo,

die Fehlermeldung sieht merkwuerdig aus: die Fehlermeldung sieht aus, als ob er in foo.m in Zeile 52 die Funktion foo aufrufen moechte. Wenn er aber in foo.m ist, dann ist foo nicht die MEX Datei ...?? Ich wuerde vorschlagen, den Debugger zu verwenden, breakpoint setzen und mit "which foo" jeweils abfragen, was MATLAB gerade unter foo versteht ...

Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.