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 :

Librairie statique C et passage d'arguments


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 21
    Points : 8
    Points
    8
    Par défaut Librairie statique C et passage d'arguments
    Bonjour, j'ai créé une librairie C a partir d'un ensemble de fonctions matlab que j'ai interfacée avec un programme C++. Je cherche à passer des parametres à ma fonction, dont voici le prototype :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function [VoltageMap,CurrentMap]=chipIRDropSolver(poly,listContact,...
                                                    width_h, thickness_h, pitch_h,rsheet_h,...
                                                    width_v, thickness_v, pitch_v,rsheet_v,...
                                                    vias_res,Iconso)
    a part poly et listContact, les autres sont de simples entiers. Et bien sur ce sont les deux premiers qui me posent probleme : il s'agit de deux listes de tailles variable dans une dimension et de 2 dans l'autre (liste de coordonnées dans un plan). Du coté C++, je m'interface en faisant ceci (essai un peu rapide qui crash)

    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
    double *data;//[] = {1,2,3,4,5,6,7,8,9};
       data=(double *)malloc(2*(nbBoundaries+nbContacts+10)*sizeof(double));
       for(int i=0;i<2*nbBoundaries;i+=2)
       {
          data[i]=listBoundaries[i].x;
          data[i+1]=listBoundaries[i+1].y;
       }
       for(int i=2*nbBoundaries;i<(2*nbBoundaries+2*nbContacts);i+=2)
       {
          data[i]=listContacts[i].x;
          data[i+1]=listContacts[i+1].y;
       }
       int index=2*nbBoundaries+2*nbContacts;
       data[index]=p1;
       data[index]=p2;
    ...
    Et l'appel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    in = mxCreateDoubleMatrix(2,nbBoundaries+nbContacts+10,mxREAL);
                memcpy(mxGetPr(in), data, 2*(nbBoundaries+nbContacts+10)*sizeof(double));
     
                /* Call the library function */
                mlxChipIRDropSolver(0, &out, (2*nbBoundaries+2*nbContacts+10), &in);
    mon probleme est bien de savoir comment mettre en place mes données dans le mxCDoubleMatrix : avec des parametres de types différents c'est bien compliqué et je n'ai pas trouvé comment faire...
    Si vous avez besoin d'infos supplémentaires n'hésitez pas !
    Sincerily

  2. #2
    Membre averti

    Inscrit en
    Août 2007
    Messages
    302
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 302
    Points : 352
    Points
    352
    Par défaut
    Hello,

    Je n'ai jamais fais dans ce sens, mais mon intuition me dit qu'il y a peut-etre un probleme ici:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    /* Call the library function */
     mlxChipIRDropSolver(0, &out, (2*nbBoundaries+2*nbContacts+10), &in);
    je pense qu'il faut plutot faire:
    mlxChipIRDropSolver(NB_ARGOUT, &out, NB_ARG_IN, &in);

    ou NB_ARGOUT/NB_ARG_IN sont le nombres d'arguemnts de sortie (et d'entree resp). de ta fonction MATLAB et non la taille de tes tableaux.


    Salutations,

    Gregoire

Discussions similaires

  1. Réponses: 6
    Dernier message: 04/05/2010, 05h46
  2. Passage de librairies statiques en DLL
    Par mister3957 dans le forum C++
    Réponses: 9
    Dernier message: 11/05/2009, 13h52
  3. librairie statique/dynamique
    Par trop_wizz dans le forum MFC
    Réponses: 4
    Dernier message: 11/04/2005, 10h04
  4. [web] passage d'arguments à un CGI
    Par ma2th dans le forum Web
    Réponses: 4
    Dernier message: 20/08/2004, 12h18
  5. passage d'argument à la procédure main ()
    Par Zazeglu dans le forum C
    Réponses: 5
    Dernier message: 01/09/2003, 19h59

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