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 :

Compatibilité entre types Fortran et structures C, avec pointeurs


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Points : 10
    Points
    10
    Par défaut Compatibilité entre types Fortran et structures C, avec pointeurs
    Bonjour,

    Mon problème apparaît sur une machine HP-UX10 et sur une machine Linux 64bits.

    J'essaie de faire communiquer C et Fortran (90), avec une fonction C appelée depuis un programme Fortran. Le problème n'est pas dans l'appel, ni dans les arguments.

    J'utilise des types dérivés Fortran contenant des pointeurs, alloués et initialisés dans le prog Fortran. Je définis les structures C correspondant à ces types dérivés en prenant garde aux dimensions des éléments (integer(kind=4) <==>int, real(kind=4) <==> float) et à l'ordre éléments dans les 2 langages.

    Apparemment, lorsqu'un membre est un pointeur Fortran, ma structure C n'est pas bonne. Je déclare par exemple 2 int *p,*q en C pour 2 integer,pointer :: ptr1,ptr2 en F90 (j'en mets 2 car avec 1, ça marche, mais pour le 2ieme, non). Une simple impression de p et q (adresses + valeurs) dans ma fonction me donne un résultat faux pour q. Je pense que la taille prise par un integer,pointer Fortran n'est celle d'un int* et ça semble logique puisque le pointer Fortran est un objet complexe.

    en F90:
    type,public :: ObjetF
    integer(kind=4),pointer :: ptr1,ptr2
    end type

    en C:
    struct objetC {
    int *p,*q;
    } objetC;

    Quelle correspondance peut-on établir entre les 2 objets type F et struct C?
    Simple problème d'alignement? je n'y crois pas.

    Merci à vous.
    Harold

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    voir Forum Fortran

    Question posee maintes fois et resolues autant de fois
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    voir Forum Fortran

    Question posee maintes fois et resolues autant de fois
    pas vraiment, non.
    En F2003, OK, il faut utiliser les outils d'inter-opérabilité. Mais en 90, rien.
    Une solution pour le 90?

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    pose quand-meme la question sur le forum Fortran...

    Tu auras beaucoup plus de possibilites de reponses (les gens qui travaillent en Fortran travillent aussi en C, la reciproque n'est pas vraie...)
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    C'est fait.
    merci

    Apparemment, F90 ne permet pas la compatibilité. Seul F2003 le fait. Dommage.

Discussions similaires

  1. Réponses: 3
    Dernier message: 17/10/2013, 17h42
  2. [DLL C++] Compatibilité de type avec Delphi
    Par almoude dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 28/10/2011, 14h49
  3. [1.x] (in)compatibilité entre ie6 et firefox pour les input type text
    Par sab_etudianteBTS dans le forum Symfony
    Réponses: 1
    Dernier message: 07/11/2008, 13h51
  4. Réponses: 1
    Dernier message: 18/04/2008, 17h16
  5. Problème de compatibilité de types avec Delphi et SQLServer
    Par scrat88 dans le forum Bases de données
    Réponses: 2
    Dernier message: 22/05/2006, 11h31

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