Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1583 connectés 

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [MC++] gcroot, dll en c#, code en c++

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MC++] gcroot, dll en c#, code en c++

n°1345794
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 13-04-2006 à 10:41:13  profilanswer
 

Bonjour à tous. Je cherche de l'aide sur gcroot et en général sur le mélange code managed / code unmanaged.
 
En gros j'ai une dll codée en C# que je veux utiliser dans du code C++.
Je fais donc un  
 

Code :
  1. #using <toto.dll>
  2. using namespace toto::titi;


 
J'ai lu que pour utiliser une variable managed dans du code unmanaged, il fallait utiliser le wrapper gcroot, aussi je fais donc ce genre d'opération :
 

Code :
  1. gcroot<Foobar*> fb = new Foobar();


avec Foobar une classe managed de la dll C#.
 
Et j'ai même un conteneur, un

Code :
  1. std::vector< gcroot<Foobar*> >


 
 
Mais voilà j'aimerai savoir comment bien me servir de gcroot... c'est juste pour déclarer des variables (on dirait vu la MSDN) ou alors gcroot<Blop*> devient carrément le nouveau type avec lequel on travaille (je mets quoi comme type retourné par mes fonctions ?)
 
Et si mon conteneur doit stocker des instances de classes héritées de Foobar, je fais quoi quand je sors mon Foobar* du conteneur ? dynamic_cast ? Parce que en gros ca compile un peu dans tous les cas mais à l'exécution j'ai des "null reference" / "null pointer" et autre variante, sans trop pouvoir débugger facilement... gcroot perturbe pas mal le système de typage on dirait :/
 
 
 
Donc si quelqu'un a une explication claire sur comment gérer une collection d'objets managed dans du code unmanaged, je suis preneur  :bounce:  
 
J'ai bien quelques liens sur le sujet, mais tous s'arrêtent au cas des String, personne ne fait de polymorphisme  [:ruisseau de larmes] :
http://www.codetools.com/managedcp [...] print=true
http://www.codeguru.com/csharp/.ne [...] php/c4849/
http://www.codeguru.com/cpp/cpp/cp [...] php/c6867/
 
 
 
 
Merci de toute l'aide que vous pourrez me filer  :jap:


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
mood
Publicité
Posté le 13-04-2006 à 10:41:13  profilanswer
 

n°1346024
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 13-04-2006 à 14:06:54  profilanswer
 

Un wrapper pour planquer du code managed dans du non managed : http://msdn.microsoft.com/msdnmag/issues/05/04/C/
Je sais pas si je trouverai ce que je cherche, mais au moins ca fera un embryon de topic pour d'autres ;)


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
n°1356228
Xavier_OM
Monarchiste régicide (fr quoi)
Posté le 28-04-2006 à 18:41:46  profilanswer
 

(Je posterai ce que je découvre au fil du temps ici)
 
gcroot perturbe le compilateur qui connaît le polymorphisme entre un Toto* et un FilsDeToto*, mais pas entre un gcroot<Toto*> et un gcroot<FilsDeToto*>. La solution :
* pour stocker : list_of_toto.push_back(static_cast<Toto*>(pointeur_sur_instance_de_fils_de_toto));
* pour déstocker :
          o Ne marche pas : FilsDeToto* fdt = dynamic_cast< FilsDeToto* >(this->list_of_filters.back());
          o Marche : Toto* t = this->list_of_filters.back(); FilsDeToto* fdt = dynamic_cast< FilsDeToto* >(t);


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  [MC++] gcroot, dll en c#, code en c++

 

Sujets relatifs
code pour placer une image sur une UserForme[Résolu] Pb pour accéder à un formulaire par le code
Appel d'une macro en code VBAComment gérer un code retour d'une procédure SQL serveur en VB
Effet de ce code ?décodage de code barre (avec une douchette sur port ps/2)
Generateurs de code pour .Net[Perl]Code de 8 lignes à essayer sous Perl sous Linux
[Résolu] Afficher du code HTMLCode ASCII des touches de direction
Plus de sujets relatifs à : [MC++] gcroot, dll en c#, code en c++


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR