Domanda

Ho un progetto di piccole e medie dimensioni in C++/CLI.Odio davvero le estensioni della sintassi di C++/CLI e preferirei lavorare in C#.Esiste uno strumento che fa un lavoro decente nel tradurre l'uno nell'altro?

MODIFICARE: Quando ho detto Managed c++ prima, apparentemente intendevo c++/CLI

È stato utile?

Soluzione

È possibile tradurre il codice C++ gestito (e il codice C++/CLI) in C# solo se il codice C++ è gestito puro.Se non lo è, ad es.se nei sorgenti è incluso codice nativo, strumenti come .NET Reflector non saranno in grado di tradurre il codice per te.

Se è presente codice C++ nativo mescolato, ti consiglio di provare a spostare il codice nativo in una DLL separata, sostituire le chiamate alle funzioni DLL con funzioni stub facilmente identificabili, compilare il progetto come una libreria .NET pura, quindi utilizzare Riflettore .NET da decompilare nel codice C#.Quindi puoi sostituire le chiamate alle funzioni stub con chiamate p-invoke alla tua DLL nativa.

Buona fortuna!Mi dispiace per te!

Altri suggerimenti

.NET Managed C++ è come un disastro ferroviario.Ma hai esaminato la CLI C++?Penso che Microsoft abbia fatto un ottimo lavoro in questo campo per rendere il C++ un cittadino .NET di prima classe.

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

Non sono sicuro che funzionerà, ma prova a usarlo .Net Riflettore insieme a ReflectionEmitLanguage collegare.Il plug-in RelelectionEmitLanguage afferma di convertire l'assembly in codice C#.

Nel 2004 circa Microsoft disponeva di uno strumento in grado di convertire il C++ gestito in C++/CLI...una specie di.L'abbiamo eseguito su un paio di progetti, ma a dire il vero la quantità di lavoro rimasta per ripulire il progetto non era inferiore alla quantità di lavoro che sarebbe stata necessaria per eseguire la conversione a mano in primo luogo.Tuttavia, non credo che lo strumento sia mai stato rilasciato pubblicamente (forse per questo motivo).

Non so quale versione di Visual Studio stai utilizzando, ma abbiamo gestito codice C++ che non verrà compilato con Visual Studio 2005/2008 utilizzando l'opzione /clr:oldSyntax e abbiamo ancora una reliquia VS 2003 in giro per questo.

Non conosco alcun modo per passare da C++ a C# in modo utile ...potresti provare a farlo scattare attraverso il riflettore :)

Tali progetti vengono spesso eseguiti in c++/cli perché C# non è realmente un'opzione elegante per l'attività.per esempio.se devi interfacciarti con alcune librerie C++ native o eseguire operazioni ad altissime prestazioni in C di basso livello.Quindi assicurati solo che chiunque abbia scelto c++/cli non avesse una buona ragione per farlo prima di eseguire il passaggio.

Detto questo, sono molto scettico sul fatto che ci sia qualcosa che fa quello che chiedi, per il semplice motivo che non tutto il codice C++/cli è traducibile in C# (e probabilmente anche viceversa).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top