Kommentarer
Svar
Disse opkald kan ikke overføres, i det mindste ikke direkte. gcnew
er ikke et C ++ nøgleord, det er fra “C ++ / CLI”, som er et andet sprog, der i øjeblikket ikke understøttes af gcc. Dette ældre SO-spørgsmål siger, at der var en gang et forsøg på at støtte det, men det ser ud til at være død siden 2009.
Den eneste rimelige måde for dette er at porte hele den administrerede kode til standard C ++, derefter gcnew
og gcroot
behøves ikke mere.
Svar
Ud over DocBrowns svar , kan du overveje at bruge noget eksisterende affaldssamlerbibliotek (f.eks. Boehms conservati ve GC , eller RavenBrook “s MPS eller din egen GC) i din kode. Se også dette .
Det er måske ikke let at bruge en sådan GC (det er måske ikke engang værd at smerte, og du kan beslutte at bruge ægte C ++ manuel styring og smarte pointer uden GC), og du skal bestemt være opmærksom på GC-teknikker, koncepter, terminologi og faldgruber. Så læs GC-håndbogen .
Bemærk, at du måske også overvejer at bruge nogle eksisterende C ++ rammebiblioteker, f.eks. som Qt eller POCO eller Boost .
Du skal grundlæggende omskrive din kode til mere standard C ++ (f.eks. mindst C ++ 14).
Kommentarer
- Sidebemærkning: Når du porterer administreret kode til ikke-administreret, er den manglende GC ofte ikke det største problem, hvis det overhovedet er et problem. Find en erstatning for .NET framework-klassebiblioteker, der bruges af programmet, er.
g++
tilclang
.