Pergunta

Eu tenho um projeto de pequeno a médio porte que está em C++/CLI.Eu realmente odeio as extensões de sintaxe do C++/CLI e prefiro trabalhar em C#.Existe uma ferramenta que faz um trabalho decente de tradução de um para o outro?

EDITAR: Quando eu disse C++ gerenciado antes, aparentemente quis dizer c++/CLI

Foi útil?

Solução

Você só poderá converter o código C++ gerenciado (e o código C++/CLI) para C# se o código C++ for gerenciado puro.Se não for - ou seja,se houver código nativo incluído nas fontes - ferramentas como o .NET Reflector não serão capazes de traduzir o código para você.

Se você tiver código C++ nativo misturado, recomendo tentar mover o código nativo para uma DLL separada, substituir suas chamadas para funções DLL por funções stub facilmente identificáveis, compilar seu projeto como uma biblioteca .NET pura e usar Refletor .NET para descompilar em código C#.Em seguida, você pode substituir as chamadas para as funções stub por chamadas p-invoke para sua DLL nativa.

Boa sorte!Sinto por você!

Outras dicas

O .NET Managed C++ é como um desastre de trem.Mas você já olhou para C++ CLI?Acho que a Microsoft fez um ótimo trabalho nesse campo para tornar o C++ um cidadão .NET de primeira classe.

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

Não tenho certeza se isso funcionará, mas tente usar Refletor .Net juntamente com ReflexãoEmitLanguage plugar.O plug-in RelelectionEmitLanguage afirma converter seu assembly em código c#.

Em ~2004, a Microsoft tinha uma ferramenta que convertia C++ gerenciado em C++/CLI ...tipo de.Executamos isso em alguns projetos, mas, para ser honesto, a quantidade de trabalho restante para limpar o projeto não foi menor do que a quantidade de trabalho que teria sido para fazer a conversão manualmente.Não acho que a ferramenta tenha sido lançada publicamente (talvez por esse motivo).

Não sei qual versão do Visual Studio você está usando, mas gerenciamos código C++ que não será compilado com o Visual Studio 2005/2008 usando a opção /clr:oldSyntax e ainda temos uma relíquia do VS 2003 disponível para ele.

Não conheço nenhuma maneira de passar de C++ para C# de uma forma útil...você pode tentar fazer uma viagem de ida e volta através do refletor :)

Esses projetos geralmente são feitos em c++/cli porque C# não é realmente uma opção elegante para a tarefa.por exemplo.se você precisar interagir com algumas bibliotecas C++ nativas ou fazer coisas de alto desempenho em C de baixo nível.Portanto, certifique-se de que quem escolheu c++/cli não tenha um bom motivo para fazê-lo antes de fazer a troca.

Dito isto, sou altamente cético de que haja algo que faça o que você pede, pela simples razão de que nem todo código C++/cli é traduzível para C# (e provavelmente vice-versa também).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top