2009-04-21 9 views
1

Existe-t-il un outil qui prendra une série d'en-têtes C++ et générera un XSD et une classe qui sérialisera le C++ en XML?C++ Object Graph to C#

Ou vraiment ce que nous recherchons est le moyen le plus simple de migrer des données de C++ vers C#? Nous avons une bibliothèque en C++ que nous aimerions écrire en GUI en C#. En utilisant les classes wrapper managées, il semble que nous devrons faire des wrappers pour chaque classe. L'automatisation est l'objectif.

Répondre

1

Une solution possible ... mais nécessite encore un peu de travail !:

Si vous utilisez Microsoft Visual Studio vous pouvez utiliser le CodeDom (http://msdn.microsoft.com/en-us/library/y2k85ax6.aspx) pour analyser votre code C++. Vous pouvez ensuite utiliser des modèles T4 pour écrire du code C# ou des fonctions C++ qui sérialiseront vos objets C++.

Si vous avez la version 2008 de Visual Studio, vous obtenez le T4. Pour 2005 c'est un téléchargement supplémentaire. (http://msdn.microsoft.com/en-us/library/bb126445.aspx)

1

Avez-vous songé à écrire un petit script pour convertir les en-têtes C++ dans un fichier protocol buffer.proto.

Cette transformation devrait être relativement simple. Ensuite, les implémentations de tampons de protocole C++ et C# existent et vous devriez être capable de générer la plus grande partie de votre C# et avoir une façon semi-raisonnable de les synchroniser lorsque vous changez. Cela dit, je dirais toujours que, si possible, compiler votre bibliothèque avec/clr pour la rendre trivialement utilisable depuis C#. Cela peut ne pas être possible si d'autres consommateurs de la bibliothèque ne peuvent pas dépendre des temps de fonctionnement du CLR bien sûr.