Fermé. Cette question est hors sujet . Il naccepte pas les réponses actuellement.

Commentaires

  • Un peu plus de contexte, par exemple, en quoi consiste le code managé, ou combien il y en a, nous permettrait probablement de vous donner une meilleure réponse.
  • BTW, vous ne devriez pas porter vers un nouveau compilateur, mais vers un langage de programmation plus standard (probablement C ++ 14 standard). Donc, passer de g++ à clang devrait être facile une fois que vous avez fait votre travail.
  • Documentation Microsoft sur C ++ / CLI (Common Language Infrastructure) . Fondamentalement, rien dans C ++ / CLI nest portable. De nombreuses bibliothèques de plates-formes sont partagées avec C #, donc le portage de lapplication vers C # peut être possible si le système dexploitation cible est Windows. C ++ / CLI lui-même est confiné à Windows sur les processeurs x86 ou x64. Le portage vers un autre framework GUI nécessite généralement une refonte complète de la partie GUI du code. C ++ / CLI peut utiliser une interface graphique telle que: System.Drawing, System.Windows.Forms, Windows Presentation Foundation (WPF).
  • Le portage du code GUI vers Xamarin (Mono, un environnement qui utilise le langage C #) peut lui permettre de fonctionner sur des plates-formes autres que Windows x86 / x64. Les données peuvent être passées entre C # et C ++ simple (qui peut être compilé en tant que DLL non managée sous Windows ou objet partagé dynamique (.so) sous Linux) à laide de P / Invoke, disponible sur Microsoft C # et Xamarin / Mono.

Réponse

Ces appels ne peuvent « t être portés, du moins pas directement. gcnew nest pas un mot-clé C ++, il provient de « C ++ / CLI », qui est un autre langage actuellement non pris en charge par gcc. Cette ancienne question SO indique quil y a eu une fois une tentative de le supporter, mais il semble être mort depuis 2009.

Le seul moyen raisonnable pour cela est de porter tout le code géré en C ++ standard, puis gcnew et gcroot « ne seront plus nécessaires.

Réponse

En plus de la réponse de DocBrown « , vous pouvez envisager dutiliser une bibliothèque de ramasse-miettes existante (par exemple, Boehm « s conservati ve GC , ou RavenBrook « s MPS , ou votre propre GC) dans votre code. Voir aussi ceci .

Il pourrait ne pas être facile dutiliser un tel GC (cela ne vaut même pas la peine, et vous pourriez décider pour utiliser une gestion manuelle authentique C ++ et des pointeurs intelligents sans GC), et vous devez certainement être conscient des techniques, des concepts, de la terminologie et des pièges du GC. Lisez donc Le manuel du GC .

Notez que vous pouvez également envisager dutiliser certaines bibliothèques de framework C ++ existantes, telles que comme Qt ou POCO ou Boost .

En gros, vous devriez réécrire votre code en C ++ plus standard (par exemple C ++ 14 au moins).

Commentaires

  • Note complémentaire: lors du portage de code managé vers non managé, le GC manquant nest le plus souvent pas le plus gros problème, si cest un problème. Trouvez un remplacement pour les bibliothèques de classes .NET Framework utilisées par le programme.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *