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

MFC Discussion :

[VC++][MFC][DLL]retourner un tableau


Sujet :

MFC

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    140
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 140
    Par défaut [VC++][MFC][DLL]retourner un tableau
    ouais je sais ça peut paraître con, et mon erreur doit l'être aussi mais là je ne vois plus rien du tout et donc, j'en appel à votre bon coeur....mais surtout à votre compétence en C++ !

    environnement: Windows XP PRo SP2, VSC++6, Codage d'une DLL
    alors voilà:

    la fonction suivante reçoit plusieurs paramètres. Les 2 derniers sont des tableaux dont la taille peut varier d'un appel à l'autre..bref ces deux tableaux sont vides et doivent être remplis par cette fonction.
    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
    17
    18
    19
    20
     
    double CalcFilmCont(char *fetude, usint nind, double *vspots, int nbspots, char *dcbl, double *contacts, int *poids)
    {
      //Déclarations
      double *Pbci;
     
      //initialisation
      Pbci = new double[nind];
      contacts = new double[nind];
     
      // traitement qui rempli Pbci
     
      //je récupère les valeurs de Pbci dans contacts par la boucle suivante
      for(i=0;i<nind;i++)
      {
        contacts[i] = Pbci[i];
      }
     
      return 0;
    }

    Cette fonction est appelée par le point d'entrée suivant de ma DLL:
    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
     
    extern "C" __declspec(dllexport)
    		double calc_filmcontact(char *fetude, usint nind, double *vspots, int nbspots, char *dcbl, double *contacts, int *poids)
    {
      double ret=0;
     
      AFX_MANAGE_STATE(AfxGetStaticModuleState());
      TRY
      {  
        ret = CalcFilmCont(fetude,nind,vspots,nbspots,dcbl, contacts,poids);
      }
      END_TRY
     
      return ret;
    }

    Et le problème c'est qu'une fois de retour dans le programme appelant, je n'ai absolument rien dans le tableau contacts si ce n'est de jolis petits zéros .....

    merci de votre aide à tous,
    Ben

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 258
    Par défaut
    Le pointeur contacts est modifié dans la fonction CalcFilmCont, mais cette modification ne se propage pas dans l'appelant puisque le pointeur est passé par valeur. Pour que ta fonction ait le comportement requis, contacts devra être passé par référence :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    void f(double * & contacts);
    Autre solution, plus "propre", est d'utiliser un objet encapsulant le pointeur, type std::vector.

Discussions similaires

  1. Retourner un tableau ?
    Par chateau_dur dans le forum C++
    Réponses: 8
    Dernier message: 20/08/2005, 12h11
  2. [MFC][DLL]Afficher une CDialog ?
    Par matazz dans le forum MFC
    Réponses: 13
    Dernier message: 13/04/2005, 13h47
  3. [plpgsql] comment retourner un tableau
    Par hpghost dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 27/06/2004, 21h09
  4. Fonction qui retourne un tableau
    Par _lara_ dans le forum ASP
    Réponses: 6
    Dernier message: 24/05/2004, 15h06
  5. [MFC] Affichage d'un tableau
    Par SethPech dans le forum MFC
    Réponses: 7
    Dernier message: 23/02/2004, 15h48

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