Stengt. Dette spørsmålet er utenfor emnet . Det aksepteres for øyeblikket ikke svar.

Kommentarer

  • Litt mer sammenheng, for eksempel hva den administrerte koden handler om, eller hvor mye det er av den, vil sannsynligvis tillate oss å gi deg et bedre svar.
  • BTW bør du ikke portere til en ny kompilator, men til et mer standard programmeringsspråk (sannsynligvis standard C ++ 14). Så å bytte fra g++ til clang bør være enkelt når du har gjort jobben din.
  • Microsoft-dokumentasjon på C ++ / CLI (Common Language Infrastructure) . I utgangspunktet er ingenting i C ++ / CLI bærbart. Mange av plattformbibliotekene deles med C #, så det kan være mulig å portere applikasjonen til C # hvis mål-OS er Windows. C ++ / CLI i seg selv er begrenset til Windows på x86- eller x64-prosessorer. Portering til et annet GUI-rammeverk krever vanligvis fullstendig omarkitektur av GUI-delen av koden. C ++ / CLI kan bruke GUI som: System.Drawing, System.Windows.Forms, Windows Presentation Foundation (WPF).
  • Portering av GUI-koden til Xamarin (Mono, et miljø som bruker C # språk) kan la den kjøre på andre plattformer enn Windows x86 / x64. Data kan overføres mellom C # og vanlig C ++ (som kan kompileres som ikke-administrert DLL på Windows eller dynamisk delt objekt (.so) på Linux) ved hjelp av P / Invoke, tilgjengelig på både Microsoft C # og Xamarin / Mono.

Svar

Disse samtalene kan ikke porteres, i det minste ikke direkte. gcnew er ikke et C ++ nøkkelord, det er fra «C ++ / CLI», som er et annet språk som for øyeblikket ikke støttes av gcc. Dette eldre SO-spørsmålet sier at det var en gang et forsøk på å støtte det, men det ser ut til å være død siden 2009.

Den eneste rimelige måten for dette er å portere all den administrerte koden til standard C ++, så gcnew og gcroot trenger ikke lenger.

Svar

I tillegg til DocBrowns svar , kan du vurdere å bruke noe eksisterende søppelsamlerbibliotek (f.eks. Boehms conservati ve GC , eller RavenBrook «s MPS , eller din egen GC) i koden din. Se også dette .

Det er kanskje ikke lett å bruke en slik GC (det er ikke engang verdt smerten, og du kan bestemme deg for å bruke ekte C ++ manuell administrasjon og smarte pekere uten GC), og du må absolutt være klar over GC-teknikker, konsepter, terminologi og fallgruver. Så les GC-håndboken .

Legg merke til at du også kan vurdere å bruke noen eksisterende C ++ rammebiblioteker, for eksempel som Qt eller POCO eller Boost .

Du bør omskrive koden din til mer standard C ++ (f.eks. minst C ++ 14).

Kommentarer

  • Sideanmerkning: når du porterer administrert kode til ikke-administrert, er den manglende GC ofte ikke det største problemet, hvis det i det hele tatt er et problem. Finn en erstatning for .NET framework-klassebibliotekene som brukes av programmet er.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *