Question

J'ai un projet de taille petite à moyenne en C ++ / CLI. Je déteste vraiment les extensions de syntaxe de C ++ / CLI et je préférerais travailler en C #. Existe-t-il un outil permettant de traduire l’un en l’autre?

ÉDITER: lorsque j'ai dit Managed c ++ avant que je ne parle apparemment de c ++ / CLI

Était-ce utile?

La solution

Vous ne pouvez traduire le code C ++ géré (et le code C ++ / CLI) en C # que si le code C ++ est pur. Si ce n’est pas le cas, c’est-à-dire si du code natif est inclus dans les sources, des outils tels que .NET Reflector ne pourront pas traduire le code pour vous.

Si vous avez mélangé du code C ++ natif, nous vous recommandons d'essayer de déplacer le code natif dans une DLL distincte, de remplacer vos appels aux fonctions DLL par des fonctions de stub facilement identifiables. Compilez votre projet en tant que bibliothèque .NET pure. , puis utilisez le réflecteur .NET pour décompiler en code C #. Vous pouvez ensuite remplacer les appels aux fonctions de stub par des appels p-invoke à votre DLL native.

Bonne chance! Je me sens pour toi!

Autres conseils

.NET géré C ++ est comme une épave de train. Mais avez-vous examiné C ++ CLI? Je pense que Microsoft a fait un excellent travail dans ce domaine pour faire du C ++ un citoyen .NET de première classe.

http://msdn.microsoft.com/en-us/magazine /cc163852.aspx

Je ne sais pas si cela fonctionnera, mais essayez d’utiliser .Net Reflector avec le plug-in ReflectionEmitLanguage . Le plug-in RelelectionEmitLanguage prétend convertir votre assemblage en code c #.

Retour ~ 2004 Microsoft avait un outil qui convertissait le C ++ géré en C ++ / CLI ... en quelque sorte. Nous l’avons fait sur quelques projets, mais à vrai dire, la quantité de travail laissée pour nettoyer le projet n’était pas moindre que celle qu’aurait été la conversion à la main. Je ne pense pas que cet outil ait jamais été publié dans une version publique (peut-être pour cette raison).

Je ne sais pas quelle version de Visual Studio vous utilisez, mais nous avons géré du code C ++ qui ne sera pas compilé avec Visual Studio 2005/2008 à l'aide du commutateur / clr: oldSyntax et nous disposons toujours d'une relique VS 2003 autour de il.

Je ne connais aucun moyen de passer du C ++ au C # de manière utile ... vous pouvez essayer de le contourner par un réflecteur:)

De tels projets sont souvent réalisés dans c ++ / cli car C # n’est pas vraiment une option élégante pour la tâche. par exemple. si vous devez vous connecter avec des bibliothèques C ++ natives, ou faire des choses très performantes en C de bas niveau, assurez-vous que celui qui a choisi c ++ / cli n’a pas de bonne raison de le faire avant de changer de logiciel.

Cela étant dit, je suis très sceptique: quelque chose répond à votre demande, pour la simple raison que tout le code C ++ / cli n'est pas traductible en C # (et probablement aussi l'inverse).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top