Existem ferramentas para portar o código C ++ para o código C#? [fechado
-
26-09-2019 - |
Pergunta
Eu tenho alguns utilitários C ++ que gostaria de portar para o ponto de ponta. Eu queria saber se existem ferramentas para portar um aplicativo C ++ para C#?
Eu imagino que qualquer ferramenta automatizada faria uma bagunça de qualquer código, então talvez eu também deva perguntar se essa é uma boa ideia ou não?
Solução
A melhor pergunta é por que você jamais apenas Código de trabalho da porta sem obter valor agregado (ou seja, novos recursos)? O esforço quase será mais difícil e levará mais tempo do que você espera. Melhor, use os muitos recursos de interop do .NET para chamar seu código C ++ de C#. Concentre -se em adicionar novos recursos em C#, mas não perca seu tempo portando código de trabalho.
Outras dicas
- Teclado.
- Rato.
- Monitor.
- Café.
- Pesquisa de expressão regular e substitua.
Claro, é um mercado animado. Indo de C ++ para C# dá a você algo que poderia Compilar de maneira limpa. Fazer isso realmente funcionar exige um esforço de linha a linha: "Oh Gawd, eu vou me atirar em Tomorow". Ymmv.
Isso deveria ter sido um comentário. Mas não tenho credenciais suficientes para postar um comentário. Isso não é exatamente relevante para sua pergunta. Eu pensei que será útil para você.
C ++ -> C#: O que você precisa saber para passar de C ++ para C#
Minha compania, Designs semânticos possui uma ferramenta que converte de C ++ para C#. Ele lida com as construções de idioma do núcleo de conversão de C ++ (declarações de dados/classe, instruções executáveis) para C#. A ferramenta de tradução é baseada em O kit de ferramentas de reengenharia de software DMS.
Ele precisa de personalização para lidar com construções exóticas de tradução (chamadas COM, suas APIs personalizadas, ...) para C#. Qualquer ferramenta que você possa encontrar precisará dessa personalização; Nenhuma ferramenta pronta para uso pode praticamente abordar seu conjunto completo de circunstâncias específicas.
Que tal o compilador C ++/CLI, que produz conjuntos .NET a partir do código C ++. Eventualmente, você desejará refazer os pontos de entrada para aceitar os tipos .NET (por exemplo, System::String
em vez do clássico char *
), mas você chegará ao .NET muito mais rápido por não usar C#. Também existem conversões automatizadas entre C ++/CLI e C#, mas somente após o código C ++ ser. System::String
, generic<typename T> System::Collections::Generic::List
, etc.)