Kommentarer
Svar
Dessa samtal kan inte överföras, åtminstone inte direkt. gcnew
är inte ett C ++ – nyckelord, det är från ”C ++ / CLI”, vilket är ett annat språk som för närvarande inte stöds av gcc. Denna äldre SO-fråga säger att det fanns en gång ett försök att stödja det, men det verkar vara dött sedan 2009.
Det enda rimliga sättet för detta är att porta hela den hanterade koden till standard C ++, sedan gcnew
och gcroot
behövs inte längre.
Svar
Förutom DocBrowns svar kan du överväga att använda ett befintligt skräpsamlingsbibliotek (t.ex. Boehms konservati ve GC , eller RavenBrooks MPS , eller din egen GC) i din kod. Se även detta .
Det kanske inte är lätt att använda en sådan GC (det kanske inte ens är värt smärtan, och du kan bestämma att använda äkta C ++ manuell hantering och smarta pekare utan GC), och du måste verkligen vara medveten om GC-tekniker, koncept, terminologi och fallgropar. Så läs GC-handboken .
Observera att du också kan överväga att använda några befintliga C ++ rambibliotek, t.ex. som Qt eller POCO eller Boost .
Du bör i princip skriva om din kod till mer standard C ++ (t.ex. C ++ 14 åtminstone).
Kommentarer
- Sidanot: när man överför hanterad kod till ohanterad är den saknade GC oftast inte det största problemet, om det alls är ett problem. Hitta en ersättning för .NET-ramklassbiblioteken som används av programmet är.
g++
tillclang
borde vara enkelt när du gjorde ditt jobb.