Zárt. Ez a kérdés témán kívül van . Jelenleg nem fogadja el a válaszokat.

Megjegyzések

  • Egy kicsit több kontextus, például, hogy miről szól a kezelt kód, vagy mennyi van belőle, valószínűleg lehetővé tenné számunkra, hogy megadjuk jobb válasz.
  • BTW nem új fordítóra kell portálnia, hanem egy szabványosabb programozási nyelvre (valószínűleg a C ++ 14 szabványra). Tehát a g++ -ről a clang -re váltásnak egyszerűnek kell lennie, miután elvégezte a munkáját.
  • A Microsoft dokumentációja a C ++ / CLI (közös nyelvi infrastruktúra) . Alapvetően semmi sem hordozható a C ++ / CLI-ben. Számos platformkönyvtár meg van osztva a C # -val, így az alkalmazás C # -ra való áthelyezése lehetséges lehet, ha a cél operációs rendszer Windows. Maga a C ++ / CLI Windowsra korlátozódik x86 vagy x64 processzorokon. Másik GUI keretrendszerbe történő portolás általában a kód GUI részének teljes átépítését igényli. A C ++ / CLI olyan GUI-t használhat, mint: System.Drawing, System.Windows.Forms, Windows Presentation Foundation (WPF).
  • A GUI kód Xamarinba (Mono, egy C # nyelvet használó környezet) történő portolása lehetővé teszi a Windows x86 / x64-től eltérő platformokon való futtatást. Az adatok átadhatók a C # és a sima C ++ között (amelyet nem felügyelt DLL-ként állíthatnak össze Windows rendszerben vagy dinamikus megosztott objektumként (.so) Linuxon), a P / Invoke használatával, amely elérhető a Microsoft C # és a Xamarin / Mono egyaránt.

Válasz

Ezeket a hívásokat nem lehet portolni, legalábbis közvetlenül nem. gcnew nem C ++ kulcsszó, hanem a “C ++ / CLI” -től származik, amely egy másik nyelv, amelyet a gcc jelenleg nem támogat. Ez a régebbi SO kérdés szerint egyszer megpróbálta támogatni, de úgy tűnik, hogy 2009 óta halott.

Ennek egyetlen ésszerű módja az, hogy az összes kezelt kódot C ++ szabványba portálja, majd gcnew és gcroot nem lesz többé szükség.

Válasz

A DocBrown válaszon kívül fontolhatja meg néhány meglévő szemétgyűjtő könyvtár használatát (pl. Boehm konzervativusa ve GC , vagy RavenBrook MPS , vagy saját GC) a kódban. Lásd még ezt .

Lehet, hogy nem könnyű használni egy ilyen GC-t (lehet, hogy nem is éri meg a fájdalmat, és eldöntheti hogy eredeti C ++ kézi kezelést és intelligens mutatókat használjon GC nélkül), és mindenképpen tisztában kell lennie a GC technikáival, fogalmaival, terminológiájával és buktatóival. Tehát olvassa el a következőt: A GC kézikönyve .

Vegye figyelembe, hogy fontolóra veheti néhány létező C ++ keretrendszer-könyvtár használatát is mint Qt vagy POCO vagy Boost .

Alapvetően át kell írnia a kódot szabványosabb C ++ – ra (pl. legalább C ++ 14).

Megjegyzések

  • Megjegyzés: Ha a kezelt kódot nem felügyeltre portálja, akkor a hiányzó GC általában nem a legnagyobb probléma, ha egyáltalán probléma. Keressen egy helyettesítést a program által használt .NET keretrendosztály-könyvtárak számára.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük