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++/CLI Discussion :

Utilisation de gcroot


Sujet :

C++/CLI

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 222
    Points : 110
    Points
    110
    Par défaut Utilisation de gcroot
    Bonjour,

    Je suis en train de mélanger du code managé à une grosse application initialement développée en non managée.

    L'application ne fonctionne pas si elle est compilée en Managé (/clr), j'ai donc simplement ajouté un #pragma unmanaged à la fin de mon fichier stdafx.h ...
    Comme ca, tout est compilé en natif malgré l'option /clr (pour mon ancien code) et tout fonctionne bien.

    Dans toutes mes classes CLI, je commence avec #pragma managed et je finis par #pragma unmanaged afin que seules ces classes soient compilées avec /clr....

    Maintenant, dans l'une de mes classes non managées, j'ai besoin d'utiliser un objet de ma classe managée

    Je fais donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    gcroot<ObjetManaged ^> MonObjet;
    MonObjet = gcnew ObjetManaged();
    et là, la compilation me dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    error C3821: 'ObjetManaged' : impossible d'utiliser un type ou une fonction managée dans une fonction non managée
    Pourquoi donc ? qu'ai je mal fait ou mal compris ?

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 222
    Points : 110
    Points
    110
    Par défaut
    #include <gcroot.h>
    ou
    #include <vcclr.h>

    ne change à priori pas grand chose...

    je vais essayer en ajoutant un
    #pragma managed
    au début de ma classe normalement non-managée...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 222
    Points : 110
    Points
    110
    Par défaut
    Ok, ca fonctionne...

    Ce qui veut dire que :
    gcroot permet d'utiliser un objet d'une classe de référence (ref class) dans une class native (class) à la condition d'être en mode managé...


    Me trompe-je ?

  4. #4
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    oui, car ce template utilise des méthodes du framework.net

Discussions similaires

  1. Probleme utilisation d'Objets managé grace a gcroot
    Par pepefourras dans le forum MFC
    Réponses: 4
    Dernier message: 16/05/2006, 00h26
  2. utiliser les tag [MFC] [Win32] [.NET] [C++/CLI]
    Par hiko-seijuro dans le forum Visual C++
    Réponses: 8
    Dernier message: 08/06/2005, 15h57
  3. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36
  4. [BCB5] Utilisation des Ressources (.res)
    Par Vince78 dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/04/2002, 16h01
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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