Frage

Ich habe eine kleine bis mittlere Projekt, das in C ++ / CLI ist. Ich hasse wirklich die Syntax-Erweiterungen von C ++ / CLI und ich würde es vorziehen, in C # zu arbeiten. Gibt es ein Tool, das einen anständigen Job macht von professionellen Übersetzern auf der anderen Seite?

EDIT: Wenn ich c Managed sagte ++, bevor ich offenbar gemeint c ++ / CLI

War es hilfreich?

Lösung

Sie können nur übersetzen Managed C ++ Code (und C ++ / CLI-Code) zu C #, wenn die C ++ Code ist rein verwaltet. Wenn dies nicht der Fall - das heißt, wenn es nativen Code in den Quellen enthalten ist -. Tools wie .NET Reflector nicht in der Lage sein, den Code für Sie zu übersetzen

Wenn Sie zu tun haben native C ++ Code gemischt, dann würde ich empfehlen, versuchen, den nativen Code in eine separate DLL zu bewegen, ersetzen Sie Ihre Anrufe zu DLL-Funktionen durch leicht identifizierbare Stub-Funktionen, kompilieren Sie Ihr Projekt als reine .NET-Bibliothek verwenden, dann Reflektor .NET in C # -Code de-kompilieren. Dann können Sie die Anrufe an die Stub-Funktionen von p-invoke Anrufe an Ihre nativen DLL ersetzen.

Viel Glück! Ich fühle mich für Sie!

Andere Tipps

.NET Managed C ++ ist wie ein Zugunglück. Aber ausgesehen haben Sie in C ++ CLI? Ich denke, dass Microsoft einen guten Job in diesem Bereich hat zu C ++ macht einen ersten Klasse .NET Bürger.

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

Ich bin mir nicht sicher, ob dies funktionieren wird, aber versuchen Sie es mit NET Reflector zusammen mit ReflectionEmitLanguage Plug-in. Die RelelectionEmitLanguage Plug-In Ansprüche Ihre Montage zu c # -Code zu konvertieren.

Back ~ 2004 Microsoft hat ein Tool, das C ++ zu C ++ / CLI ... Art von Managed umwandeln würde. Wir liefen sie auf ein paar Projekte, aber ehrlich die Menge der Arbeit zu sein, verließ das Projekt Reinigung war nicht weniger als die Menge der Arbeit wäre es gewesen, die Umwandlung von Hand in erster Linie zu tun. Ich glaube nicht, das Werkzeug immer es gemacht, obwohl in eine öffentliche Freigabe aus (vielleicht aus diesem Grunde).

Ich weiß nicht, welche Version von Visual Studio Sie verwenden, aber wir haben C ++ Code verwaltet, die mit Visual Studio 2005/2008 nicht kompiliert werden mit dem / clr: oldSyntax wechseln und wir haben noch ein Relikt VS 2003 um für es.

Ich weiß nicht, von irgendeiner Weise von C ++ gehen zu C # in einer sinnvollen Weise ... Sie könnten versuchen, um ihn herum durch Reflektor Auslösung:)

Solche Projekte werden häufig in C ++ / cli getan, weil C # nicht wirklich eine elegante Option für die Aufgabe. z.B. wenn Sie mit einiger native C ++ Bibliotheken Schnittstelle haben oder tun eine sehr hohe Leistung Sachen in niedrigem Niveau C. Also nur sicherstellen, dass wer auch immer gewählt c ++ / cli hat keinen guten Grund, es zu tun, bevor Sie den Schalter zu tun.

Having said that, ich bin sehr skeptisch gibt es etwas, das tut, was Sie fragen, aus dem einfachen Grund, dass nicht alle C ++ / cli Code in C # übersetzbar ist (und wahrscheinlich umgekehrt auch).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top