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 :

Comment envoyer les résultats d'un code Fortran à un programme C ?


Sujet :

Fortran

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 8
    Points : 2
    Points
    2
    Par défaut Comment envoyer les résultats d'un code Fortran à un programme C ?
    Bonsoir,

    Dans le cadre d'un projet, je dois réaliser une interface graphique en C++ faisant appel à un programme fortran, le tout fonctionnant sous Windows.
    J'ai essayé le package libf2c; J'obtiens des fichiers .c "linkables" sauf par exemple lorsque ma subroutine fait appel à une autre subroutine (call ...) ou le fichier est vide...
    C'est hors sujet ici, mais j'ai essayé de faire des pipes à partir de C++ pour éxécuter et récupérer les valeurs du code fortran, mais je m'avoue quelque peu dépassé par les manipulation à réaliser.
    Je commence à désespérer un peu et pense à me rabattre sur le recodage manuel en c++ du code fortran d'ici peu...
    Auriez vous par hasard une idée de solution ou des renseignements à me fournir sur le problème s'il vous plait?!?

    En attendant, merci d'avance et bonne soirée.

    MartindtC

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    110
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 110
    Points : 130
    Points
    130
    Par défaut
    Bonjour,

    je ne suis pas un programmeur sous Windows. Maintenant, ce que je peux te dire, c'est que le Fortran jusqu'au 95 n'a pas une manière portable d'être interfacer avec le C ou le C++. Mais il est possible de le faire (avec les compilateurs GNU sous Cygwin et Windows, avec les passages d'adresses et tout, cela fonctionne). Tout cela pour dire qu'il n'y a pas de manière en général de le faire: c'est dépendant du compilateur et de ton système.

    Selon moi, il serait plus propre de tout coder en C++. Mais je pense que certains ne seront pas d'accord avec moi

    A noter, le Fortran 2003 permet d'interfacer facilement ces langages, le tout est d'avoir le compilateur adéquat!

  3. #3
    Candidat au Club
    Inscrit en
    Mars 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Ok merci pour ta réponse, je vais essayer avec Cygwin alors...

  4. #4
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut !

    J'utilise le Compaq Visual Fortran et j'ai trouvé ceci dans le Help:

    Mixed-language programming is the process of building programs in which the source code is written in two or more languages. It allows you to:

    • Call existing code that is written in another language
    • Use procedures that may be difficult to implement in a particular language
    • Gain advantages in processing speeds


    Mixed-language programming is possible among the 32-bit languages Visual Fortran, Visual C/C++, Visual Basic, and MASM. Mixed-language programming in Win32 is different from that in 16-bit environments, and in many respects it is easier.
    Je n'ai jamais utilisé cette possibilité, mais je pense que c'est exactement ce que tu cherches.

    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  5. #5
    Candidat au Club
    Inscrit en
    Mars 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Je vais jeter un oeil a Compaq Visual Fortran alors!
    Merci bien pour ton indication Jean-Marc!

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Août 2006
    Messages
    974
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 974
    Points : 1 346
    Points
    1 346
    Par défaut
    Tu auras probablement de la difficulté à te procurer CVF puisque le produit n'est plus commercialisé depuis quelques années (suite à l'achat de Compaq par Intel). Le successeur de CVF est IVF (Intel Visual Fortran).

    Il y a 3 solutions à ton problème :
    • Tu converti le code Fortran en C++, tel que l'a suggéré.
    • Tu fais du mix-language, tel que suggéré par Jean-Marc. Ce n'est pas réservé à CVF; tous les compilateurs le font, mais la solution exacte n'est pas portable d'un compilateur/système à l'autre. Si tu utilises la version la plus récente de certains compilateurs, tu auras accès à l'interface C/C++ de Fortran 2003, ce qui facilitera la mise en place.
    • Tu fais un programme externe avec ton code Fortran et tu passe l'info par fichier (ou par pipe). Cette approche est généralement plus portable et plus facile à mettre en place que la précédente, mais elle est moins interactive.

  7. #7
    Candidat au Club
    Inscrit en
    Mars 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    J'ai trouvé CVF6 sur internet, il ne me reste plus qu'à comprendre et faire ce qui est conseillé par la doc.

    J'ai déjà essayé les pipes, mais je suis dépassé et il me manque trop de connaissances en informatique pour réussir dans cette voie.

    J'ai d'ailleurs commencé à coder en C++, car rien d'autre n'aboutit réellement.
    J'ai réussi à faire du mix-language avec un programme fortran "bidon", mais lorsque j'essaie avec mon programme, cela n'aboutit pas.

    En tout cas, merci bien de m'avoir accorder du temps et pour vos indications à tous.

  8. #8
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut !

    Pour convertir du Fortran en C, il existe un programme f2c qui est téléchargeable gratuitement de http://netlib.org. Le code ainsi obtenu n'est pas excellent, mais tu peux l'améliorer ensuite. Si ton code est gros, ça te gagnera peut-être du temps.

    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  9. #9
    Candidat au Club
    Inscrit en
    Mars 2008
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 8
    Points : 2
    Points
    2
    Par défaut
    Bonsoir,

    J'ai déjà essayé avec f2c (cf http://www.developpez.net/forums/sho...37#post3023137), sans réussite..

Discussions similaires

  1. Comment classer les résultats de ma requete ?
    Par eustache dans le forum Requêtes et SQL.
    Réponses: 19
    Dernier message: 27/02/2009, 22h03
  2. Réponses: 14
    Dernier message: 27/10/2006, 13h08
  3. Réponses: 2
    Dernier message: 26/09/2006, 08h56
  4. Réponses: 3
    Dernier message: 04/07/2006, 16h34
  5. Serveur/Client UDP: comment envoyer un fichier avec mon code
    Par danje dans le forum Entrée/Sortie
    Réponses: 7
    Dernier message: 21/12/2005, 14h54

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