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

Visual C++ Discussion :

AccessViolation lors d'appel de fonction retournant un tableau de string


Sujet :

Visual C++

  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 110
    Par défaut AccessViolation lors d'appel de fonction retournant un tableau de string
    Bonjour tout le monde.

    Voila je suis dans un contexte c++/cli, je veux faire passé un tableau de string de la couche "native" à la couche "cli". pour ca, dans une classe de la couche native, j'ai une méthode de type string* getUnTableaudeString(), le tableau en question, est déclaré en variable membre (ou d'instance).

    Lorsque j'appel cette méthode a partir d'une classe de la couche cli, je ne peu rien faire avec, sous peine d'avoir un accessViolation exception.

    bref je me demande comment dois-je passé un tableau de string, pour pouvoir l'utilisé comme bon me semble à partir de n'importe quelle méthode qui appel ce tableau.???

    je vois ptete plusieurs solution, mais je veux avoir d'autre avis avant de me lancer

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 393
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 393
    Par défaut
    Montre un peu plus de ton code...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 110
    Par défaut
    bon j'ai un peu changer le truc vu ke ca fonctionnait pas avec un tableau de string j'ai utilisé un vector. Mais euuh ca change vraiment rien


    donc j'ai une class Wrapper qui a une methode getMachines que voici.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    array<String^>^ CliWrapperObservability::getMachines(void)
    	{
    		Console::WriteLine("WRAPPER OBS TAILLE MACHINEs "+ptrObs->getNbMachines());
    		vector<string> lMachines = vector<string>();
     
    /*C'est ici qu'on appel le natif et que ca foire surment*/
    		ptrObs->getMachines(lMachines);
     
    		array<String^>^tab = gcnew array<String^>(10);
    		for(int i = 0;i<ptrObs->getNbMachines();i++)
    		{
    			tab[i]=Conversion::cppStr2NetStr(lMachines.at(i));
    		}
    		return tab;
    dans mon projet natif, j'ai un class avec la methode appelé ci au dessus => getMachine()

    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
    vector<string>& Observability::getMachines(vector<string>& aVec)
    {
    	vector<string> v = vector<string>();
    //PLUS PRECISEMENT C EST AU PREMIER PUSHBACK QUE CA FOIRE
    	aVec.push_back("MACH_1");
    	aVec.push_back("MACH_2");
    	aVec.push_back("MACH_3");
    	aVec.push_back("MACH_4");
    	aVec.push_back("MACH_5");
    	aVec.push_back("MACH_6");
    	aVec.push_back("MACH_7");
    	aVec.push_back("MACH_8");
    	aVec.push_back("MACH_9");
    	aVec.push_back("MACH_10");
    	return aVec;
    }
    j'ai essayé de 2 manières, la premiere c'est le natif qui crée le vector et le renvoi au wrapper, et la seconde que j'affiche ici, le wrapper qui crée le vector et envoi l'adresse au natif. mais a chaque fois j'ai des crash de mon application

  4. #4
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 110
    Par défaut
    je comprend vraiment pas, j'ai creer une nouvelle fonction qui est une copie de la fonction qui se trouve dans le projet natif, mais celle-ci je l'ai tapé dans la classe du projet c++/cli. et la ca fonctionne.. exactement le même code

    y aurait un probleme pour envoyé des adresses vers d'autre projet??? ou c'est moi qui m'y pren mal

    EDIT :

    En fait j'ai ptete une idée, mais je sais pas si ca peut provenir de là.. donc est-ce que c'est possible qu'une variable déclaré dans une méthode ne peut être accessible en dehors de la classe ou elle a été déclarer?

    EDIT2 :
    Bon ba non c pas ca, par désespoire j'ai même mis le vecteur en public, mais rien a faire

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2005
    Messages
    110
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 110
    Par défaut
    Bon voila j'ai enfin trouvé la solution

    faut utilisé des types de base, donc char** youhou

    merci a tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Problème lors d'appel de fonction dans page de démarrage.
    Par Vidou12 dans le forum VB.NET
    Réponses: 46
    Dernier message: 20/01/2015, 14h40
  2. PB avec fonction retournant un tableau
    Par T-B dans le forum Langage
    Réponses: 2
    Dernier message: 27/01/2006, 22h01
  3. Réponses: 6
    Dernier message: 20/01/2006, 19h28
  4. fonction retournant un tableau
    Par Jero13 dans le forum C
    Réponses: 7
    Dernier message: 22/11/2005, 11h14
  5. appeler une fonction connaissant son nom (en string)
    Par Guigui_ dans le forum Général Python
    Réponses: 1
    Dernier message: 20/07/2004, 00h46

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