gcroot, dll en c#, code en c++ [MC++] - C#/.NET managed - Programmation
Marsh Posté le 13-04-2006 à 14:06:54
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
Marsh Posté le 28-04-2006 à 18:41:46
(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);
Marsh Posté le 13-04-2006 à 10:41:13
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
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 :
avec Foobar une classe managed de la dll C#.
Et j'ai même un conteneur, un
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
J'ai bien quelques liens sur le sujet, mais tous s'arrêtent au cas des String, personne ne fait de polymorphisme :
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
---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.