Suljettu. Tämä kysymys on aiheen ulkopuolella . Se ei tällä hetkellä hyväksy vastauksia.

Kommentit

  • Hieman enemmän kontekstia, esimerkiksi mikä hallitussa koodissa on kyse tai kuinka paljon sitä on, antaisi meille todennäköisesti mahdollisuuden antaa sinulle parempi vastaus.
  • BTW: tä ei kannata portoida uuteen kääntäjään, vaan normaalimpaan ohjelmointikieleen (luultavasti vakio C ++ 14). Joten vaihtamisen tilasta g++ tilaan clang pitäisi olla helppoa, kun olet tehnyt työn.
  • Microsoftin dokumentaatio C ++ / CLI (yhteinen kieliinfrastruktuuri) . Pohjimmiltaan mikään C ++ / CLI: ssä ei ole kannettava. Monet alustan kirjastoista on jaettu C #: n kanssa, joten sovelluksen siirtäminen C #: een voi olla mahdollista, jos kohde-käyttöjärjestelmä on Windows. C ++ / CLI itsessään on rajoitettu Windowsiin x86- tai x64-suorittimilla. Eri GUI-kehyksiin siirtäminen vaatii tyypillisesti koodin GUI-osan täydellisen uudelleenarkkitehtuurin. C ++ / CLI saattaa käyttää graafista käyttöliittymää, kuten: System.Drawing, System.Windows.Forms, Windows Presentation Foundation (WPF).
  • GUI-koodin siirtäminen Xamariniin (Mono, ympäristö, joka käyttää C # -kieltä) saattaa anna sen toimia muilla alustoilla kuin Windows x86 / x64. Tiedot voidaan siirtää C #: n ja tavallisen C ++: n välillä (joka voidaan koota hallinnoimattomana DLL: nä Windowsissa tai dynaamisena jaettuna objektina (.so) Linuxissa) käyttämällä P / Invoke-tiedostoa, joka on saatavana sekä Microsoft C #: lla että Xamarin / Monolla.

Vastaa

Näitä puheluja ei voi siirtää, ainakaan suoraan. gcnew ei ole C ++ -avainsana, se on peräisin C ++ / CLI-kielestä, joka on eri kieli, jota gcc ei tällä hetkellä tue. Tämä vanhempi SO-kysymys sanoo, että kerran yrittänyt tukea sitä, mutta se näyttää olevan kuollut vuodesta 2009 lähtien.

Ainoa järkevä tapa tähän on siirtää kaikki hallittu koodi standardiin C ++, sitten gcnew ja gcroot ei enää tarvita.

Vastaa

DocBrown ”-vastauksen lisäksi voit harkita jonkin olemassa olevan roskakorikirjaston käyttöä (esim. Boehmin konservatiivit ve GC tai RavenBrook MPS tai oma GC) koodissasi. Katso myös tämä .

Tällaisen GC: n käyttäminen ei ehkä ole helppoa (se ei ehkä edes kannata kipua, ja voit päättää käyttää aitoa C ++ – manuaalista hallintaa ja älykkäitä osoittimia ilman GC: tä), ja sinun on varmasti oltava tietoinen GC: n tekniikoista, käsitteistä, terminologiasta ja ongelmista. Joten lue GC-käsikirja .

Huomaa, että saatat myös harkita joidenkin olemassa olevien C ++ -kehyskirjastojen, kuten kuten Qt tai POCO tai Boost .

Sinun tulisi periaatteessa kirjoittaa koodi normaalimmaksi C ++: ksi (esim. vähintään C ++ 14).

Kommentit

  • Sivuhuomautus: kun siirretään hallittua koodia hallitsemattomaksi, puuttuva GC ei useimmiten ole suurin ongelma, jos se on lainkaan ongelma. Etsi korvike ohjelman käyttämille .NET-kehysluokan kirjastoille.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *