Portování Symbian C ++ Android NDK

hlasů
2

Dostal jsem nějaké Symbian C ++ kód do přístavu více než pro použití s ​​Android NDK.

Kód má spoustu Symbian specifický kód v něm a mám velmi málo zkušeností s C ++, takže její nebude moc dobře.

Hlavní věc, která se mi zpomaluje se snaží přijít na to, alternativy pro použití v běžném jazyce C ++ pro specifický kód Symbian.

Na minutu kompilátor vyhazovali všechny druhy chyb na neuznaných typů.

Z mého nedávného výzkumu se jedná o typy, které věřím, jsou Symbian specifická:

Nádech, TBool, TDesc8, RSocket, TInetAddress, TBuf, HBufc, RPointerArray

Změna odstínu a TBool na int a bool respektive pracuje v kompilátoru, ale já jsem si nejste jisti, co použít pro jiné typy?

Může mi někdo pomoci s nimi? Zvláště TDesc, TBuf, HBuf a RPointerArray.


Také Symbian má dvě fáze konstruktor pomocí

NewL

a

NewLc

Ale to by změna to normální C ++ konstruktor být v pořádku?


Nakonec Symbian využívá vyčistit komín pomoci eliminovat úniky paměti věřím, bylo by odstranění clean up stack kód bylo přijatelné, předpokládám, že by měl být nahrazen prohlášení try / úlovku?

Položena 22/04/2010 v 09:48
zdroj uživatelem
V jiných jazycích...                            


4 odpovědí

hlasů
3

Nejsem si jistý, zda jste stále zájem, ale jednou z možností je, že pokud jsou idiomy Symbian používáte EUSER.DLL (tj TDesC odvozené třídy, RPointer *, atd) můžete najít udělali open source EPL kód z Symbian vývojář site a přidáním přímo do portu schůdnou možnost. Že je port přes potřebných bitů EUSER (a jiní snad?).

Nicméně, pokud vaše aktuální číslo základny již používá mnoho dalších subsystémů budete vidět stala velmi nepraktické.

Odpovězeno 26/04/2010 v 22:23
zdroj uživatelem

hlasů
2

Pokud to není velký codebase může být jednodušší / rychlejší začít od nuly a dělá vše, co styl Android. I když budete potřebovat NDK/C++tento přístup může být rychlejší.

Jiný přístup může být používat přenosné C/C++pro jádro a použití tohoto na obou Symbian a Android verze přitom UI věci zvlášť pro každou platformu. Spotify to udělali na Android a iPhone.

Odpovězeno 22/04/2010 v 11:36
zdroj uživatelem

hlasů
2

Měli byste se pokusit přečíst některé úvodní text o vývoji pro Symbian. Bývaly nějaké příklady v místě Symbian, a jsem si jist, že můžete najít konkrétní dokumenty o tom, jak tyto typy, které chcete jsou určeny k použití a to, co poskytují.

Problém je, že Symbian vývoj má své vlastní idiomy, které nemohou / nesmí být přímo použity mimo Symbian životního prostředí, jako je například dvoufázová konstrukce s vyčištění zásobníku je nepotřebné v prostředích, kde překladač má správné mechanismy zpracování výjimek --in Symbian konstruktor, který vrhá může vést ke všem druhům zmatku.

Odpovězeno 22/04/2010 v 10:08
zdroj uživatelem

hlasů
1

To by typicky být špatný nápad, aby se pokusila portu Symbian OS C ++ do standardního C ++, aniž by bylo velmi dobré znalosti o tom, co styly Symbian dělat.

To by mohlo velmi dobře být jedním z těchto projektů, kde je správná věc udělat, je přepsat většinu kódu skoro od nuly. Pokud jste sotva znát jazyk, který je cílení, nemá smysl v klamou sami sebe do myšlení nebudete dělat chyby, ztrácet čas a zahodit nový kód stejně. To vše je součástí učení.

CleanupStack mechanismus je určen k vám pomohou vypořádat s ničím, co by mohlo pokazit, včetně výpadku napájení az paměťových podmínek. Z technického hlediska, v těchto dnech, to je implementován jako C ++ výjimky, ale pokrývá více než obvyklých případech chybových standardní C ++ kódu normálně rukojeti.

Popisovače (TDesc, TBuf a HBuf všichni patří do hierarchie deskriptor třídy) a šablony (pole, fronty, seznamy ...) existovaly již před jejich ekvivalent ve standardním C ++ při řešení otázek, jako je CleanupStack, kódování norem, správy paměti a integrity .. ,

Odpovídající konektor, pokud se chcete dozvědět o tom: Rychlé recepty na platformě Symbian OS je nedávný pokus explaning to vše v co nejmenším počtem stran jak je to možné.

Také byste měli rozhodně podívat na nadace webové stránky, abyste mohli začít.

Třídy předponou T mají být dostatečně malý, aby samy o sobě mohou být přiděleny v zásobníku.

Popisovače třídy s příponou C mají být neměnné (A měnitelné deskriptor může být obvykle vytvořena z nich, ačkoli).

HBufC je v podstatě jedinou třídou Symbian předponou H. To by mělo být vždy na haldě.

Metoda s příponou C přidá objekt na CleanupStack kdy úspěšně vrátí (obvykle je to objekt se vrací). Je to až k volajícímu kódu Pop daný objekt.

Třídy předponou R jsou určeny mají být přiděleny v zásobníku, ale spravovat své vlastní haldy založené zdroje. Oni obvykle mají nějaký druh close () metoda, která musí být volána před jejich destruktor.

Typickým způsobem, jak věc, o rozdílech mezi kolekci objektů a sbírka ukazatelů k objektu je, kdo je vlastníkem objektů v kolekci. Buď kolekce vlastní objekty, když jsou přidány a ztrácí je, když jsou odstraněny (a je tudíž zodpovědná za vymazání každý objekt stále obsahuje, když je sama zničena) nebo kolekce nepřevádí vlastnictví a něco jiného je třeba zajistit objekty obsahuje zůstane v platnosti po celou dobu životnosti sbírce má.

Dalším způsobem, jak přemýšlet o sbírkách je o tom, kolik kopírování objektů, které se má stát, když přidáte / získat objekty / z kolekce.

Symbian deskriptor a kolekce třídy jsou určeny k pokrytí všech těchto různých způsobů využití paměti a nechat si vybrat ten, který potřebujete na základě toho, co chcete dělat.

Je to jistě není snadné na to právo, ale to, jak tento operační systém funguje.

Odpovězeno 22/04/2010 v 11:15
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more