Commenti
Rispondi
Quelle chiamate non possono “essere trasferite, almeno non direttamente. gcnew
non è una parola chiave C ++, proviene da “C ++ / CLI”, che è una lingua diversa attualmente non supportata da gcc. Questa vecchia domanda SO dice che cera una volta un tentativo di supportarlo, ma sembra essere morto dal 2009.
Lunico modo ragionevole per questo è portare tutto il codice gestito in C ++ standard, quindi gcnew
e gcroot
non saranno più necessari.
Risposta
Oltre alla risposta di DocBrown “, potresti prendere in considerazione lutilizzo di alcune librerie di Garbage Collector esistenti (ad es. Conservati di Boehm ve GC , o RavenBrook “s MPS , o il tuo GC) nel tuo codice. Vedi anche questo .
Potrebbe non essere facile usare un simile GC (potrebbe non valerne la pena e potresti decidere per utilizzare una vera gestione manuale C ++ e puntatori intelligenti senza alcun GC), e certamente devi essere a conoscenza delle tecniche, dei concetti, della terminologia e delle insidie del GC. Quindi leggi The GC handbook .
Nota che potresti anche considerare lutilizzo di alcune librerie di framework C ++ esistenti, come come Qt o POCO o Boost .
Fondamentalmente dovresti riscrivere il tuo codice in un C ++ più standard (ad esempio, almeno C ++ 14).
Commenti
- Nota a margine: quando si esegue il porting di codice gestito in unmanaged, il GC mancante molto spesso non è il problema più grande, ammesso che lo sia affatto. Trova un sostituto per le librerie di classi .NET framework utilizzate dal programma è.
g++
aclang
dovrebbe essere facile una volta che hai svolto il tuo lavoro.