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

MATLAB Discussion :

accès structure retournée par une fonction


Sujet :

MATLAB

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 265
    Points : 352
    Points
    352
    Par défaut accès structure retournée par une fonction
    Bonjour,
    je souhaiterais rendre compatible un programme en C réalisé sous Visual Studio 2010 avec MATLAB r2010b.
    Pour cela j'ai créé un fichier MEX et ajouté les différentes bibliothèques à mon projet etc... bref tout se passe bien niveau compilation
    Cependant j'ai un problème pour accéder à des données stockées dans une structure.
    Code C : 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
     
            surface_englobante=creation_surface_englobante((serie->data)[k],serie->la,serie->lo);
     
     
            printf("\n adresse %d ",surface_englobante->surface_englobante->data);
            printf("\n adresse %f ",surface_englobante->surface_englobante->data[0][0][0]);
            mexCallMATLAB(0,NULL,0, NULL, "pause");
            // affectation des resultats à la variable de sortie globale	
    		for(i=0;i<serie->lo;i++)
                {   
     
                    for(j=0;j<serie->la;j++)
                    {
                        printf("\n[%d][%d][%d]\n",k,i,j);
                        mexCallMATLAB(0,NULL,0, NULL, "pause");
                        printf("\n data_sortie[0][%d][%d] = %f",i,j,surface_englobante->surface_englobante->data[0][i][j]);
    Lorsque j'accède aux données dans la fonction creation_surface_englobante j'accède correctement aux données.
    Lorsque j'y accède en sortie de la fonction tout est normal aussi.
    Cependant une fois rentré dans la boucle toute la mémoire a été réinitialisée à zéro...
    Quelqu'un saurait pourquoi ? Et surtout comment remédier à ce problème ?
    En pièce jointe une capture de la trace d'exécution
    Merci
    Images attachées Images attachées  

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Pourrais-tu nous fournir un exemple simple, complet et qui reproduit le problème pour pouvoir faire quelques tests ?
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 265
    Points : 352
    Points
    352
    Par défaut
    j'ai a nouveau compilé la mex ce matin sur un autre pc et cette fois ci tout c'est bien déroulé
    nv configuation : matlab r2011a visual studio 2010 édition professionnelle

    je suppose qu'il y avait un conflit entre les deux autres versions des deux logiciels

    edit :
    en faite le bug venait simplement de l'utilisation de la fonction new lors de la création de la structure.
    en l'allouant avec mxMalloc le problème a disparue.
    Après je ne sais toujours pas pourquoi au lieu de m'envoyer promener il me remettait la memoire a 0

Discussions similaires

  1. Chaîne retournée par une fonction et encodage
    Par dj-julio dans le forum Langage
    Réponses: 4
    Dernier message: 26/03/2008, 22h36
  2. Réponses: 2
    Dernier message: 24/12/2007, 09h53
  3. Réponses: 4
    Dernier message: 07/04/2007, 20h02
  4. valeur retournée par une fonction
    Par Biosox dans le forum C
    Réponses: 13
    Dernier message: 19/01/2007, 23h17
  5. Réponses: 11
    Dernier message: 31/10/2005, 17h59

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