Uzavřeno. Tato otázka je mimo téma . Momentálně nepřijímá odpovědi.

Komentáře

  • Trochu více kontextu, například o čem je spravovaný kód nebo kolik toho je, by nám pravděpodobně umožnilo poskytnout vám lepší odpověď.
  • BTW, neměli byste portovat nový kompilátor, ale standardnější programovací jazyk (pravděpodobně standardní C ++ 14). Přepnutí z g++ na clang by tedy mělo být snadné, jakmile svou práci dokončíte.
  • Dokumentace Microsoftu k C ++ / CLI (Common Language Infrastructure) . V podstatě nic v C ++ / CLI není přenosné. Mnoho knihoven platforem je sdíleno s C #, takže portování aplikace do C # může být možné, pokud je cílovým operačním systémem Windows. Samotné C ++ / CLI je omezeno na Windows na procesorech x86 nebo x64. Přenos na jiný rámec GUI obvykle vyžaduje kompletní re-architekturu části kódu GUI. C ++ / CLI může používat grafické uživatelské rozhraní, například: System.Drawing, System.Windows.Forms, Windows Presentation Foundation (WPF).
  • Přenesení kódu GUI do Xamarin (Mono, prostředí, které používá jazyk C #) může povolit jeho provoz na jiných platformách než Windows x86 / x64. Data lze předávat mezi C # a prostým C ++ (což může být kompilováno jako nespravovaná knihovna DLL v systému Windows nebo dynamický sdílený objekt (.so) v systému Linux) pomocí P / Invoke, k dispozici v Microsoft C # i Xamarin / Mono.

Přijmout

Tyto hovory nelze „přenést, alespoň ne přímo. gcnew není klíčové slovo C ++, pochází z „C ++ / CLI“, což je jiný jazyk, který gcc aktuálně nepodporuje. Tato starší SO otázka říká, že tam byl jednou pokus o jeho podporu, ale zdá se, že je mrtvý od roku 2009.

Jediným rozumným způsobem je přenést veškerý spravovaný kód do standardního C ++, pak gcnew a gcroot již nebude potřeba.

Odpovědět

Kromě odpovědi DocBrown byste mohli zvážit použití nějaké existující knihovny pro sběr odpadu (např. Boehmovi konzervativci ve GC nebo RavenBrook „s MPS nebo vlastní GC) ve vašem kódu. Podívejte se také na toto .

Používat takový GC nemusí být snadné (možná by to ani nestálo za bolest a mohli byste se rozhodnout používat originální manuální správu C ++ a inteligentní ukazatele bez GC) a určitě si musíte být vědomi technik, konceptů, terminologie a nástrah GC. Přečtěte si tedy příručku GC .

Všimněte si, že byste také mohli zvážit použití některých existujících rámcových knihoven C ++, například jako Qt nebo POCO nebo Boost .

V zásadě byste měli přepsat kód na standardnější C ++ (např. alespoň C ++ 14).

Komentáře

  • Postranní poznámka: při přenosu spravovaného kódu na nespravovaný není chybějící GC nejčastěji největším problémem, pokud se vůbec jedná o problém. Najít náhradu za knihovny tříd .NET framework používané programem je.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *