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

C# Discussion :

Passage de paramètres par référence entre du C# et du c++ Managé


Sujet :

C#

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut Passage de paramètres par référence entre du C# et du c++ Managé
    Bonjour,

    Je suis débutant en interopérabilité, et j'essaie de passer un string par référence à une méthode ecrite en c++ managé. Voici la signature de ma méthode void Methode (String^ Chaine).

    Dans cette methode je modifie le contenu de Chaine, mais la string c++ n'est pas modifiée.

    J'ai essayer la signature suivante Methode (String^ &Chaine) mais le c# n'accepte pas.

    Bref merci de m'aider.

  2. #2
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    744
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2004
    Messages : 744
    Points : 1 352
    Points
    1 352
    Par défaut
    Qu'est ce que tu veux dire par le c#il n'accepte pas ?

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Lors de la compilation j'ai le message suivant.
    Argument '1'*: impossible de convertir de 'string' en 'string*'

  4. #4
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    744
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2004
    Messages : 744
    Points : 1 352
    Points
    1 352
    Par défaut
    pourrais tu poster tout ton code (c++ et c#), j'y verrai certainement plus clair

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Voici le code en c++
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    namespace CliWrapper
    {	public ref class CliWrapperComposant
    	{	void Methode (String^ &NomComposant, String ^NomMethode, array<Object^>^ Parametres)
    			{	......
    				NomComposant= gcnew System::String ("Modifié") ;
     
    			}
    		protected :
    			!CliWrapperComposant()
    			{	DeleteComOxy (ptrComOxy) ;
    			}
    	};
    }

    et celui en c#
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    private void button1_Gerer_Click(object sender, EventArgs e)
            {   CliWrapper.CliWrapperComposant test = new CliWrapperComposant();
    						string testchaine = "essai";
    						Decimal testdecimal = 100.00M;
    						DateTime date = DateTime.Today;
    						string composant = "COMPOSANT" ;
     
    						test.Methode(composant, "GESTION", new object[] { (short) 10, testchaine, testdecimal, date});
    						MessageBox.Show(composant);
            }

  6. #6
    Rédacteur

    Inscrit en
    Juin 2004
    Messages
    744
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Juin 2004
    Messages : 744
    Points : 1 352
    Points
    1 352
    Par défaut
    Essai de passer "ref composant" au lieu de composant

    Mais je ne suis pas certain que l'on puisse passer des objets par reférence en code non managé

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 103
    Points : 1 561
    Points
    1 561
    Par défaut
    test.Methode(ref composant, "GESTION", new object[] { (short) 10, testchaine, testdecimal, date});

    tu peux utiliser outaussi selon le cas... tu verra bien le compilateur t'engueulera s'il est pas content...

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Ben en fait dans les deux cas ref et out le compilateur m'emgeule.
    Argument '1'*: impossible de convertir de 'ref string' en 'string*'

    j'ai donc essayé string* mais les pointeurs et le c# ne font pas bon ménage.

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 5
    Points : 2
    Points
    2
    Par défaut
    Bon ben j'ai trouvé grâce à la FAQ C++/Cli.

    Voici la signature finale de la méthode
    void Methode (String^ %NomComposant, String ^NomMethode, array<Object^>^ Parametres)

    et l'appel en c#

    test.Methode(ref composant, "GESTION", new object[] { (short) 10, testchaine, testdecimal, date});

    En fait c'est le % qui indique qu'il s'agit d'un passage par référence d'un handle sur un objet managé.

    Merci nico-pyright

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

Discussions similaires

  1. passage de paramètres par référence entre fonctions ?
    Par cabsen dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 28/05/2009, 10h47
  2. Passage de paramètres par référence
    Par margagn dans le forum Framework .NET
    Réponses: 2
    Dernier message: 08/05/2007, 23h08
  3. [POO] Passage de paramètre par référence.
    Par abidi_niz dans le forum Langage
    Réponses: 3
    Dernier message: 12/10/2006, 12h20
  4. [C#] passage de paramètres par référence
    Par SesechXP dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/08/2006, 12h48
  5. [EJB] Passage des paramètres par référence
    Par salome dans le forum Java EE
    Réponses: 2
    Dernier message: 05/07/2005, 11h25

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