Commentaires
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.
g++
àclang
devrait être facile une fois que vous avez fait votre travail.