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 :

compilation lapack et appel depuis c++


Sujet :

Fortran

  1. #1
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 197
    Points : 58
    Points
    58
    Par défaut compilation lapack et appel depuis c++
    Bonjour,

    Je cherche a utiliser lapack dans un programme en C++ developpé sous windows.
    Pour cela, j'ai commencé par un test : j'ai interfacé une petite librairie fortran (qui multiplie un entier par 2) avec un programme C++. Pas de problemes, ca fonctionne parfaitement.

    Pour passer à l'étape suivante, j'ai selectionné les fichiers de lapack dont j'ai besoin et je les ai compiles, un a un, en .o avec g95. J'inclus ensuite les .o dans mon projet C++.

    A la compilation j'ai une soixantaine d'erreur du type :
    obj/Debug/dgeev.f: (.text+0xdab) undefined reference to '__g95_copy_string'
    J'ai l'impression qu'il faut inclure dans mon projet des librairies internes au fortran, du type libm.a, libkernel32.a, etc...
    Mais mon compilateur C++ refuse toutes les librairies en .a, il n'accepte que les fichiers .o.

    Quelqu'un aurait une idée ?


    Voici mon code c++
    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
    #include <iostream>
     
    using namespace std;
    extern "C"  void dgeev_(char *jobvl, char *jobvr, int *n, int ***a, int *lda, double **wr, double **wi, double ***vl, int *ldvl, double ***vr, int *ldvr, \
                            double **work, int *lwork, int *info);
     
    extern void g95_runtime_start(int argc, const char *argv[]);
    extern void g95_runtime_stop();
     
    int main(int argc, const char *argv[])
    {
        g95_runtime_start(argc,argv);
        cout << "Hello world!" << endl;
        g95_runtime_stop();
        return 0;
    }

  2. #2
    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!
    D'où provient la librairie LAPACK que tu utilises?
    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)

  3. #3
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 197
    Points : 58
    Points
    58
    Par défaut
    Lapack = Linear Algebra Package
    http://www.netlib.org/lapack/

  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!
    Pourquoi ne pas voir avec Lapack++ disponible sur le même site?
    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
    Membre du Club
    Inscrit en
    Février 2004
    Messages
    197
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 197
    Points : 58
    Points
    58
    Par défaut
    Je ne peux pas utiliser Lapack++ car il a ete developpe pour les plate-formes UNIX/Linux et je travaille sous Windows !
    Lapack++ semble compilable sous Cygwin mais j'aurais alors besoin des dll cygwin ce que je veux eviter : je veux à la fin un seul fichier executable.
    C'est aussi pour cette raison que j'essaye de faire une "static library" et non pas une dll.
    Voila pourquoi je me tourne vers le code source Fortran d'origine, et je selectionne les routines de Lapack dont j'ai besoin pour les compiler directement sous Windows.

    Tout ceci ne repond pas a ma question. Comment inclure, dans une librairie statique Fortran, les fonctions de base du Fortran afin de pouvoir utiliser la librairie en C++ ??

Discussions similaires

  1. GC appel depuis une autre classe
    Par dark2 dans le forum SWT/JFace
    Réponses: 3
    Dernier message: 09/06/2006, 05h53
  2. Réponses: 4
    Dernier message: 01/06/2006, 15h55
  3. Réponses: 4
    Dernier message: 01/05/2006, 14h37
  4. [Sqlplus ] Appel depuis script KSH
    Par kasiop dans le forum Oracle
    Réponses: 2
    Dernier message: 27/01/2006, 10h25
  5. [APPLET] beans dans applet appelé depuis une page HTML
    Par Néo-Tony dans le forum Applets
    Réponses: 1
    Dernier message: 04/01/2006, 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