Pregunta

Tengo un proyecto pequeño o mediano que está en C++/CLI.Realmente odio las extensiones de sintaxis de C++/CLI y preferiría trabajar en C#.¿Existe alguna herramienta que haga un trabajo decente al traducir uno al otro?

EDITAR: Cuando dije C++ administrado antes aparentemente quise decir c++/CLI

¿Fue útil?

Solución

Solo puede traducir código C++ administrado (y código C++/CLI) a C# si el código C++ es puramente administrado.Si no es así, es decirSi hay código nativo incluido en las fuentes, herramientas como .NET Reflector no podrán traducir el código por usted.

Si tiene código C++ nativo mezclado, le recomiendo intentar mover el código nativo a una DLL separada, reemplazar sus llamadas a funciones DLL por funciones auxiliares fácilmente identificables, compilar su proyecto como una biblioteca .NET pura y luego usar Reflector .NET para descompilar en código C#.Luego puede reemplazar las llamadas a las funciones auxiliares por llamadas p-invoke a su DLL nativa.

¡Buena suerte!¡Lo siento por ti!

Otros consejos

.NET Managed C++ es como un choque de trenes.¿Pero has investigado la CLI de C++?Creo que Microsoft hizo un gran trabajo en este campo para hacer de C++ un ciudadano .NET de primera clase.

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

No estoy seguro si esto funcionará, pero intenta usar .Reflector neto junto con ReflexiónEmitirIdioma enchufar.El complemento RelelectionEmitLanguage pretende convertir su ensamblado a código C#.

En ~2004, Microsoft tenía una herramienta que convertía C++ administrado a C++/CLI...algo así como.Lo ejecutamos en un par de proyectos, pero para ser honesto, la cantidad de trabajo que quedó para limpiar el proyecto no fue menor que la cantidad de trabajo que hubiera significado hacer la conversión a mano en primer lugar.Sin embargo, no creo que la herramienta haya llegado a ser un lanzamiento público (tal vez por esta razón).

No sé qué versión de Visual Studio está utilizando, pero hemos administrado código C++ que no se compilará con Visual Studio 2005/2008 usando el modificador /clr:oldSyntax y todavía tenemos una reliquia VS 2003 disponible para ello.

No conozco ninguna forma de pasar de C++ a C# de forma útil...podrías intentar hacer un viaje de ida y vuelta a través del reflector :)

Estos proyectos a menudo se realizan en c++/cli porque C# no es realmente una opción elegante para la tarea.p.ej.si tiene que interactuar con algunas bibliotecas nativas de C++ o hacer cosas de muy alto rendimiento en C de bajo nivel.Así que asegúrese de que quien eligió c++/cli no tuviera una buena razón para hacerlo antes de realizar el cambio.

Dicho esto, soy muy escéptico de que haya algo que haga lo que usted pide, por la sencilla razón de que no todo el código C++/cli es traducible a C# (y probablemente también viceversa).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top