Esas llamadas «no se pueden transferir, al menos no directamente. gcnew
no es una palabra clave de C ++, es de «C ++ / CLI», que es un lenguaje diferente que actualmente no es compatible con gcc. Esta pregunta anterior de SO dice que una vez un intento de soportarlo, pero parece estar muerto desde 2009.
La única forma razonable para esto es portar todo el código administrado a C ++ estándar, luego gcnew
y gcroot
ya no serán necesarios.
Además de la respuesta de DocBrown «, podría considerar usar alguna biblioteca recolectora de basura existente (por ejemplo, Conservati de Boehm ve GC , o RavenBrook «s MPS , o su propio GC) en su código. Consulte también esto .
Puede que no sea fácil usar un GC de este tipo (puede que ni siquiera valga la pena, y podría decidir utilizar la gestión manual genuina de C ++ y los punteros inteligentes sin ningún GC), y sin duda debe conocer las técnicas, los conceptos, la terminología y las trampas del GC. Así que lea El manual de GC .
Tenga en cuenta que también puede considerar el uso de algunas bibliotecas de marco de C ++ existentes, como como Qt o POCO o Boost .
Básicamente, debería reescribir su código en C ++ más estándar (por ejemplo, C ++ 14 al menos).
Comentarios
- Nota al margen: cuando se transfiere código administrado a no administrado, el GC faltante no suele ser el problema más importante, si es que lo es. Encuentre un reemplazo para las bibliotecas de clases de .NET framework utilizadas por el programa.