Tych połączeń nie można przenosić, przynajmniej nie bezpośrednio. gcnew
nie jest słowem kluczowym w C ++, pochodzi z „C ++ / CLI”, czyli innego języka, który obecnie nie jest obsługiwany przez gcc. To starsze pytanie SO mówi, że raz próbował go obsługiwać, ale wydaje się być martwy od 2009 roku.
Jedynym rozsądnym sposobem na to jest przeniesienie całego zarządzanego kodu do standardowego C ++, a następnie gcnew
i gcroot
nie będą już potrzebne.
Oprócz odpowiedzi DocBrown , możesz rozważyć użycie jakiejś istniejącej biblioteki garbage collector (np. Konserwaty Boehma ve GC lub RavenBrook „s MPS lub własny GC) w swoim kodzie. Zobacz także to .
Może nie być łatwe użycie takiego GC (może nawet nie być warte bólu i możesz zdecydować aby używać oryginalnego ręcznego zarządzania C ++ i inteligentnych wskaźników bez żadnego GC), a na pewno musisz być świadomy technik GC, koncepcji, terminologii i pułapek. Przeczytaj więc Podręcznik GC .
Zauważ, że możesz również rozważyć użycie niektórych istniejących bibliotek frameworków C ++, takich jak as Qt lub POCO lub Boost .
Zasadniczo powinieneś przepisać swój kod do bardziej standardowego C ++ (np. przynajmniej C ++ 14).
Komentarze
- Uwaga dodatkowa: podczas przenoszenia kodu zarządzanego do niezarządzanego brakujący GC najczęściej nie jest największym problemem, jeśli w ogóle jest problemem. Znajdź zamiennik dla bibliotek klas .NET Framework używanych przez program.