IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Fortran Discussion :

linkage f90 / f77


Sujet :

Fortran

  1. #1
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 34
    Par défaut linkage f90 / f77
    Bonjour à tous,

    Je suis en train de dépouiller un code Fortran que j'ai trouvé sur le net et qui permet de faire des transformations de Radon (peu importe ce que c'est en fait...)

    Voici l'adresse du lien donnant tous les codes

    http://www.met.reading.ac.uk/~remi/radon.html

    En gros ce code est constitué d'un programme principal (verify_analysis.f90) et de sous-routines externes. L'une des sous-routines (hilbert_transform.f90) fait appel à la fonction FOURT définie dans dfft.f (écrit en fortran77). Dans hilbert_transform.f90, apparaît une déclaration du type

    Tous les fichiers compilent très bien mais cependant lorsque j'exécute le programme principal j'obtiens l'erreur suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Casimirs@toto:~/Bureau/test $ gfortran verify_analysis.f90 -o toto
    /tmp/ccawWteR.o: In function `__hilbert_transform_MOD_hilbert_fft':
    verify_analysis.f90:(.text+0x538): undefined reference to `fourt_'
    verify_analysis.f90:(.text+0x710): undefined reference to `fourt_'
    /tmp/ccawWteR.o: In function `__timeseries_mod_MOD_init':
    verify_analysis.f90:(.text+0xb472): undefined reference to `fourt_'
    collect2: ld returned 1 exit status
    Comme si la fonction FOURT n'étais pas reconnue...

    Comment dire à mes programmes .f90 d'aller chercher la fonction FOURT dans le fichier extérieur dfft.f (fortran77) ?

    Je vous remercie pour votre aide

    Pierre

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    489
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 489
    Par défaut
    Bonjour,

    Comment dire à mes programmes .f90 d'aller chercher la fonction FOURT dans le fichier extérieur dfft.f (fortran77) ?
    Soit en compilant tout le monde "en bloc"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gfortran verify_analysis.f90 dfft.f -o toto
    (mais c'est un peu bête de recompiler tous les éléments à chaque fois que l'on a modifié seulement l'un d'entre eux).

    Soit en ayant par ailleurs déjà compilé dfft.f pour créer l'objet dfft.o
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gfortran dfft.f -c
    Et en indiquant lors de la compilation de "verify_analysis"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gfortran verify_analysis.f90 dfft.o -o toto
    (à condition que dfft.o soit dans le même répertoire, sinon il faut précisier chemin/vers/repertoire/dfft.o).

    Soit en créant une librairie 'libdfft.a' contenant dfft.o
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    gfortran dfft.f -c
    ar -r libdfft.a dfft.o
    Et en indiquant que l'on va utiliser cette dernière lors de la compilation de "verif_analysis"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gfortran verify_alalysis.f90 -ldfft -o toto
    (a condition que libdfft.a soit dans le même répertoire, sinon il faut rajouter un '-Lchemin/vers/repertoire/de/la/librairie' avant le '-ldfft').

    Bonne continuation.

  3. #3
    Membre averti
    Inscrit en
    Mars 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 34
    Par défaut
    Merci beaucoup pour ta réponse !

    Tout marche maintenant très bien !

    Pierre

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Module subroutine et interopérabilité f77/f90
    Par DonDouego dans le forum Fortran
    Réponses: 4
    Dernier message: 27/01/2014, 16h10
  2. Transformer une instruction F77 en F90
    Par feynman dans le forum Fortran
    Réponses: 3
    Dernier message: 29/10/2007, 20h26
  3. Compilateur Fortran f77 et f90 pour Windows
    Par Zeus005 dans le forum Fortran
    Réponses: 8
    Dernier message: 08/10/2007, 22h36
  4. [MFC ]Probleme de linkage d'une dll
    Par Lysis dans le forum MFC
    Réponses: 9
    Dernier message: 22/01/2004, 14h51
  5. Probleme de linkage avec DirectDraw7 sous BC++ 5.02
    Par bobtorn dans le forum DirectX
    Réponses: 3
    Dernier message: 07/10/2003, 20h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo