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

Bibliothèques, systèmes et outils C Discussion :

Problème issu d'une conversion Fortran>C


Sujet :

Bibliothèques, systèmes et outils C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 22
    Par défaut Problème issu d'une conversion Fortran>C
    Bonjour à tous,

    J'ai un code rédigé en Fortran que je dois retranscrire en C. Je travaille sous Windows Vista 32 bits.

    J'ai donc utilisé l'application F2C pour générer les fichiers sources du C.

    Maintenant, hélas, j'ai une erreur lors de l'édition des liens. A titre d'info j'utilise Microsoft Visual C++ 2010 Express.
    J'ai inclus dans un même projet les deux fichiers source du C (qui sont censés être compilés ensemble en Fortran), ainsi que le header f2c.h, et j'obtiens ceci en sortie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    1>------ Début de la génération : Projet : Nequick_F2C, Configuration : Debug Win32 ------
    1>  slQu.c
    1>  NeQuick_ITUR.c
    1>  Génération de code en cours...
    1>LINK : fatal error LNK1561: le point dentrée doit être défini
    ========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========
    L'erreur LNK1561 semble-t-il, à l'édition des liens. J'ai déjà fait une recherche et d'autres ont eu ce numéro d'erreur, mais cela n'avait rien à voir avec une conversion Fortran>C, sauf confusion de ma part.

    J'ai l'impression qu'il faut rajouter des librairies mais je n'ai pas la moindre idée de celles qui conviennent.


    Merci pour tout renseignement.

    Cordialement.

  2. #2
    Membre éprouvé Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par défaut
    Salut,

    Tu as probablement oublié une lib. Cela dit, par expérience l'utilisation de f2c n'est pas vraiment adapté pour transcrire du fortran en C dans le sens ou code obtenu n'est pas trés exploitable en terme d'édition. Effectivement, le resultat de f2c peut normalement etre compilé avec un compilateur C mais pour le modifier ou le faire évoluer, la syntax est telle que c'est trés difficile et vraiment pas trés lisible. Si ton code n'est pas tres gros je te conseille de le transcrire à la main, le fortran en particulier si c'est du vieux tel que 77 est vraiment simple à traduire en C.

  3. #3
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    1>LINK : fatal error LNK1561: le point dentrée doit être défini
    es-tu sûr d'avoir une fonction main()

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 22
    Par défaut
    Bonjour, merci de vos réponses,

    Citation Envoyé par uriotcea Voir le message
    Salut,

    Tu as probablement oublié une lib. Cela dit, par expérience l'utilisation de f2c n'est pas vraiment adapté pour transcrire du fortran en C dans le sens ou code obtenu n'est pas trés exploitable en terme d'édition. Effectivement, le resultat de f2c peut normalement etre compilé avec un compilateur C mais pour le modifier ou le faire évoluer, la syntax est telle que c'est trés difficile et vraiment pas trés lisible. Si ton code n'est pas tres gros je te conseille de le transcrire à la main, le fortran en particulier si c'est du vieux tel que 77 est vraiment simple à traduire en C.
    Alors déjà je vais préciser un peu le contexte.
    Effectivement c'est du Fortran77.

    En gros, mon travail consiste à débugger celui d'autres personnes s'étant déjà attaquées à la conversion de Fortran vers C.
    Celles-ci s'y sont prises à la main, mais il restait des bugs manifestes, car entre ce que nous sort le C et ce que nous sort le Fortran les erreurs n'étaient pas uniformes suivant les paramètres d'entrée et pouvaient dépasser 15% !

    Donc j'ai débuggé tant bien que mal tout le code déjà écrit en C, j'suis parvenu à réduire ces erreurs mais celles-ci étaient toujours un peu trop grandes pour mon encadrant.

    Je suis donc allé m'adresser à un autre professeur, qui m'a de suite suggéré F2C.
    On a essayé déjà sur l'environnement Ubuntu et alors là, ""miracle"", les résultats retournés par le C étaient identiques à ceux du Fortran à la 4ème décimale près !
    Quand j'en ai reparlé à mon encadrant, il a lui aussi approuvé cette solution.

    Maintenant le problème, c'est qu'il faut que je travaille sous Windows !


    Aussi, je souhaiterais savoir quelle librairie j'ai bien pu oublier. J'ai téléchargé le libf2C.zip sur ce lien : http://www.netlib.org/f2c/
    Mais je ne sais pas où il faut le mettre, ce qu'il faut garder, ou même s'il y en avait besoin, etc, etc.

    Citation Envoyé par diogene Voir le message
    es-tu sûr d'avoir une fonction main()
    Oui, je viens de regarder...

  5. #5
    Membre éprouvé Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Par défaut
    Si son seul but, parfaitement honorable est d'avoir un code qui donne les même résultats qu'en f77, alors je ne comprend pas pourquoi tu ne laisses pas ce code en fortran. Le fait de devoir travailler sous windows n'empéche pas de compiler en fortran. Avec le suite GNU tu peux compiler le fortran et le C et le dialogue entre les 2 language est simple.
    j'ai récement eu un gros code ecrit en Fortran77 à faire évoluer. J'ai pris le partie de garder le fortran et à chaque fois que je voulais modifier une fonction en particulier je l'ai systématiquement ecrite en C, en linkant les 2 languages ensemble. Ainsi je fais lentement mais surtout surement evoluer ce code du fortran vers le C ou le C++aussi dailleurs.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2011
    Messages : 22
    Par défaut
    Si son seul but, parfaitement honorable est d'avoir un code qui donne les même résultats qu'en f77, alors je ne comprend pas pourquoi tu ne laisses pas ce code en fortran
    Eh bien... le problème est que les fichiers sources du C issus du Fortran doivent s'intégrer dans la suite de mon travail dans un plus grand projet en C...
    J'ai d'autres fichiers sources "tout prêts" en C, pas encore utilisés, et le tout va s'imbriquer.

    Donc j'imagine que le fait que tout soit en C rend les choses plus aisées.

    De toute façon, je crois que je n'ai pas les compétences pour "linker" deux langages ensemble comme tu l'as fait, je n'ai reçu aucune initiation au Fortran lors de mon cursus... je me suis un peu formé sur le tas lors du premier débuggage dont je parlais (sur le code rédigé en C à la main), mais c'est tout.

    Et au sein de mon labo, je doute qu'ils acceptent un morceau de leur code écrit en Fortran, sachant que mes successeurs reprendront mon travail et qu'ils ne connaîtront probablement pas Fortran plus que moi.

    Bref, ce n'est pas négociable, c'est un code en C ou rien.

Discussions similaires

  1. Réponses: 6
    Dernier message: 02/05/2010, 13h04
  2. Réponses: 4
    Dernier message: 29/06/2009, 18h02
  3. Problème lors d'une conversion CString -> char*
    Par magicpm7 dans le forum C++
    Réponses: 11
    Dernier message: 28/08/2007, 12h44
  4. [MySQL] Problème de récupération de données issues d'une base
    Par ceaser dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 11/06/2007, 11h51
  5. Réponses: 1
    Dernier message: 01/02/2007, 19h38

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