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 :
- #using <toto.dll>
- 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 :
- gcroot<Foobar*> fb = new Foobar();
|
avec Foobar une classe managed de la dll C#.
Et j'ai même un conteneur, un
Code :
- 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
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.