2011-03-30 3 views
2

J'ai écrit un wrapper pour une DLL C++ en C++/CLI. A l'intérieur du wrapper, j'ai fait quelques typedefs. Existe-t-il un moyen d'exporter ces noms en tant que classes .NET?export typedefs dans les DLL .NET


Arrière-plan: les classes typedef'd sont des modèles. Pour que ces modèles fonctionnent, vous avez besoin d'un paramètre géré et d'un paramètre natif (cela fait partie de la traduction). Ceci est impossible pour le client de l'encapsuleur à programmer/savoir. C'est pourquoi il a besoin des différents alias pour les versions utilisées du modèle.

+0

Pourquoi voudriez-vous exporter un alias? Je suppose que vous pouvez mapper les mêmes types avec le mot-clé "using" pour la lisibilité. Pouvez-vous fournir plus de détails? –

Répondre

1

J'ai échangé les typedefs avec de nouvelles définitions de classe dérivées du modèle. Cela devrait fonctionner.

+0

Assurez-vous également de transférer les constructeurs. – ildjarn

+0

oui - mon principal problème maintenant est que cela introduit des références de cycle. –

1

Je n'ai pas trop d'informations mais le typagefing ne devrait fonctionner que sur les types Clr. Classes génériques, peut-être mais les classes de modèles ne peuvent pas être typées. Aussi parmi les types natifs, seuls ceux qui sont communs (le mot «commun» peut ne pas être correct ici.) À .net ie double, int, char, Char * (pas char *) etc Ce code fonctionne et introduit un "nouveau" type à clr.

namespace example 
{ 
#ifdef _WIN64 
    typedef sizeT UInt64 
#else 
    typedef sizeT UInt32 
#endif 
} 

Maintenant, vous avez size_t de .Net, dont la taille dépend de la plate-forme.