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 :

Appel de DLL Fortran depuis C/C++


Sujet :

Fortran

  1. #1
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 27
    Points : 23
    Points
    23
    Par défaut Appel de DLL Fortran depuis C/C++
    Bonjour,
    Je dois developper un logiciel faisant appel à une dll ecrite en fortran. D'après la société ayant écrite cette DLL, les paramètres d'appel a la fonction sont :
    int* : taille du nom de travail
    char*10 : nom travail
    int* : nombre de messages d'erreur
    char*250(10) tableau de messages d'erreur

    Afin de faire appel a cette DLL je fais la déclaration suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            typedef void(__stdcall *DLLFUNC)(int*,char*, int*, char FAR**);
    et lors de l'appel a la fonction le programme l'execute puis semble planter.
    Le débuggueur de Visual Studio m'indique que le pointeur sur le tableau de chaine de caracteres semble incorrect pourtant je l'ai déclaré de cette facon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        char** erreur = (char**)malloc(10*sizeof(char*));
        for(int i=0;i<10;i++)erreur[i] = (char*)malloc(251*sizeof(char));
    Quelqu'un pourrait-t-il m'aider please ? Je suis dessus depuis 3 jours et ça commence a m'énerver.

    Merci d'avance

  2. #2
    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
    Lors du passage de variable caractère en Fortran, les compilateurs passent habituellement de façon silencieuse et en value la longueur de la chaîne à la fin de la liste d'argument.

    L'appel devrait donc se faire de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef void(__stdcall *DLLFUNC)(int*,char*, int*, char FAR**, int, int);
    où les 2 int vaudront 10 et 250.

    Pour le char FAR **, je ne sais pas... J'aurais essayé avec seulement char * sur le premier élément, mais je ne suis pas expert sur ce sujet.

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 27
    Points : 23
    Points
    23
    Par défaut
    Grrrrrr !!!!!
    Ca ne marche toujours pas!!! Je commence a perdre patience. Ca fé 3 jours que je bloque dessus. Si quelqu'un a une solution je suis prenneur.

  4. #4
    Membre éclairé Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Points : 825
    Points
    825
    Par défaut
    est-ce que par hasard tu aurais pas inversé les lignes et les colonnes... c'est une erreur classique que je fais tout le temps c'est à dire au lieu d'avoir un tableau 10*255 tu as un truc 255*10 ou l'inverse :p il faut aussi savoir que, en mémoire, fortran stocke toujours en colonne...
    il n'y a que ceux qui savent qui ne savent pas qu'ils savent...
    Libere-toi hacker, GNU's Not Unix!!!

Discussions similaires

  1. Appel d'un DLL fortran depuis vb 2008 express
    Par zerbault dans le forum VB.NET
    Réponses: 2
    Dernier message: 14/09/2010, 04h40
  2. Appeler une dll C# depuis VBA
    Par doudblast dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 17/08/2009, 15h07
  3. [JNI] Appeler une DLL Fortran à partir de Java
    Par Graffity dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 13/11/2008, 00h07
  4. Appel de DLL MATLAB depuis un programme C
    Par jericho dans le forum MATLAB
    Réponses: 1
    Dernier message: 18/02/2008, 16h09
  5. Réponses: 20
    Dernier message: 08/09/2006, 10h55

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