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

C++ Discussion :

Utilisation d'une librairie Fortran


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 72
    Par défaut Utilisation d'une librairie Fortran
    Bonjour.

    J'essaye actuellement d'utiliser des fichiers Fortran dans mon code C++. Utilisant Visual Studio 2005 j'ai réussi à générer une dll et un .lib de mon code Fortran.

    Cependant je ne sais pas de un comment l'insérer dans mon projet C++ et de deux comment appeler les fonctions définies dans ma librairie.

    Si quelqu'un pouvait m'aider ca serait tres gentil parceque je m'en sors pas

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Eh bien normalement, il suffit d'ajouter le .lib au projet et de déclarer les fonctions correspondantes (généralement dans un fichier d'en-tête)...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 72
    Par défaut ca marche pas
    Avant tout merci pour ton aide. Sinon c'est ce que j'ai fait mais pour une obscure raison cela ne marche pas.

    J'ai rajouter mon .lib dans le projet (Properties->Configuration Properties->C/C++->General->Additionnal Include Directories sous Visual Studio 2005).

    Mon code fortran est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
            MODULE FONCTION_mod
              INTERFACE 
                SUBROUTINE FONCTION(CHAINE,LG_CHAINE,REEL)
                  INTEGER(KIND=4), INTENT(INOUT) :: LG_CHAINE
                  CHARACTER(LEN=LG_CHAINE), INTENT(INOUT) :: CHAINE
                  REAL(KIND=4), INTENT(INOUT) :: REEL
                END SUBROUTINE FONCTION
              END INTERFACE 
            END MODULE FONCTION_mod
    Le lanczos.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    extern "C" void fonction_ (char *, int*, float*);
    le lanczos.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    #include <iostream> 
    #include "lanczos.h"
     
    using namespace std;
     
    void main()
    {
      int   lg_chaine  = 0;
      float reel       = 0.0;
      char  chaine[]   = "chaine_C++";
     
      lg_chaine = strlen(chaine);
      fonction_ (chaine, &lg_chaine, &reel);
     
      cout << "chaîne finale          = " << chaine << endl;
      cout << "longueur de la chaîne  = " << lg_chaine << endl;
      cout << "réel passé par adresse = " << reel << endl;
    }
    Et enfin mon erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    1>------ Début de la génération : Projet : testFortran, Configuration : Debug Win32 ------
    1>Édition des liens en cours...
    1>lanczos.obj : error LNK2019: symbole externe non résolu _fonction_ référencé dans la fonction _main
    1>MSVCRTD.lib(crtexew.obj) : error LNK2019: symbole externe non résolu _WinMain@16 référencé dans la fonction ___tmainCRTStartup
    1>C:\Documents and Settings\Fabien\Mes documents\Visual Studio 2005\Projects\testFortran\Debug\testFortran.exe : fatal error LNK1120: 2 externes non résolus
    1>Le journal de génération a été enregistré à l'emplacement "file://c:\Documents and Settings\Fabien\Mes documents\Visual Studio 2005\Projects\testFortran\testFortran\Debug\BuildLog.htm"
    1>testFortran - 3 erreur(s), 0 avertissement(s)
    ========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Include != Library.

    Tu dois rajouter le .lib dans Properties->Configuration Properties->Linker->Input->Additional Dependencies.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    72
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 72
    Par défaut
    Je l'ai fait aussi mais ca ne change rien

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Change le sous-système de ton projet de WINDOWS à CONSOLE (dans les options du linker), puisque tu as un main() et non un WinMain().
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

Discussions similaires

  1. Utilisation d'une librairie Fortran
    Par alexiel_ad dans le forum Fortran
    Réponses: 4
    Dernier message: 13/11/2007, 20h59
  2. [FB] utilisation d'une librairie C/C++
    Par dug dans le forum Connexion aux bases de données
    Réponses: 1
    Dernier message: 16/10/2006, 22h05
  3. [GD] Utilisation d'une librairie equivalente à Gd/installation sans reboot du serveur
    Par hokidoki dans le forum Bibliothèques et frameworks
    Réponses: 15
    Dernier message: 21/07/2006, 15h22
  4. Utilisation d'une librairie
    Par LordBob dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 20/07/2006, 14h06
  5. Réponses: 4
    Dernier message: 13/10/2005, 12h41

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