Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
FLVjek
Založen: 21. 09. 2007 Příspěvky: 125 Bydliště: Brno
|
Zaslal: 13. květen 2008, 09:14:39 Předmět: Zkusenosti s C++/CLI |
|
|
Ma tu nekdo zkusenosti s C++/CLI? Zvazuju pouziti C# nebo Pythonu pro vytvoreni prototypu hry, ktery by pak slouzil i jako testovaci prostredi pro finalni C++ tridy. Projekt musi byt ciste C++.
Jde mi teda o to, jak snadno se propojuje C# a C++ a jake to ma dusledky na C++ kod.
C# znam jen zbezne narozdil od Pythonu, ktery jsem spolu s Ceckem jiz pouzil, takze to je dilema.. _________________ Martin Al!eN Procházka
ředitel závodu Hammerware, s.r.o.
následuj nás: http://twitter.com/hammerware/
příspívám na twitter CH: http://twitter.com/ceskehry/ |
|
Návrat nahoru |
|
|
MD
Založen: 29. 07. 2007 Příspěvky: 437 Bydliště: Praha
|
Zaslal: 13. květen 2008, 09:50:54 Předmět: |
|
|
Celkem s tim zkusenosti mam. Krkal 3.0 je delany jako mix C++ komponent (runtime a vse stare, co se mi nechtelo prepisovat do C#) a C# komponent (nove veci, kompilator, okynka (IDE))
Urcite se toto propojeni vyplatilo, i presto ze nekdy je s tim docela prace a nemusi to byt vzdy uplne jednoduche. Oba jazyky maji sve nezanedbatelne vyhody, tak je celkem fajn je mixovat.
Co presne by sis predstavoval? Jinak pochybuji, ze by sis vystacil jen s jednim projektem (U me to bylo vzdy co komponenta to projekt, bud C++, C# nebo C++/Cli) Nevim jestli se da za behu nahrat kus C# kodu, prelozit ho a okamzite spustit, toto jsem nedelal. (ale tipuji ze to nejak jde) _________________ - play with objects - www.krkal.org - |
|
Návrat nahoru |
|
|
FLVjek
Založen: 21. 09. 2007 Příspěvky: 125 Bydliště: Brno
|
Zaslal: 13. květen 2008, 10:04:15 Předmět: |
|
|
Predstavoval bych si takovyto postup:
1. vytvoreni prototypu v C# a XNA
2. prepsani existujicich trid do C++ a pridani novych (pouze herni logika, zadne platformove zavisle veci)
3. po odladeni, integrace C++ kodu do separatne vyvijeneho projektu
Budu tedy pak muset ocistit C++ kod o jakekoli navaznosti na .net. To mi asi dela nejvetsi starost, protoze sem videl to jejich rozsireni C++. Musel bych to skryt makrama, wrappovat, apod. _________________ Martin Al!eN Procházka
ředitel závodu Hammerware, s.r.o.
následuj nás: http://twitter.com/hammerware/
příspívám na twitter CH: http://twitter.com/ceskehry/ |
|
Návrat nahoru |
|
|
Augi
Založen: 28. 07. 2007 Příspěvky: 782 Bydliště: Čerčany
|
Zaslal: 13. květen 2008, 10:19:33 Předmět: |
|
|
MD napsal: |
Nevim jestli se da za behu nahrat kus C# kodu, prelozit ho a okamzite spustit, toto jsem nedelal. (ale tipuji ze to nejak jde) |
Jo, jde to, ale když se tomu podíváš na střeva, tak to na pozadí jen zavolá "csc.exe" a dynamicky naláduje vytvořenou assembly.
FLVjek napsal: |
Predstavoval bych si takovyto postup:
1. vytvoreni prototypu v C# a XNA
2. prepsani existujicich trid do C++ a pridani novych (pouze herni logika, zadne platformove zavisle veci)
3. po odladeni, integrace C++ kodu do separatne vyvijeneho projektu |
Zvědavost mi nedá a zeptám se, proč to budeš pak přepisovat z C# do C++? |
|
Návrat nahoru |
|
|
FLVjek
Založen: 21. 09. 2007 Příspěvky: 125 Bydliště: Brno
|
Zaslal: 13. květen 2008, 10:46:39 Předmět: |
|
|
No v C# bych mel jen castecnou funkcionalitu dostacujici pro prototyp, takze nepujde o prepisovani identickeho kodu.
Kazdopadne nemuzu pouzit C# kvuli prenositelnosti na jine platformy. _________________ Martin Al!eN Procházka
ředitel závodu Hammerware, s.r.o.
následuj nás: http://twitter.com/hammerware/
příspívám na twitter CH: http://twitter.com/ceskehry/ |
|
Návrat nahoru |
|
|
MD
Založen: 29. 07. 2007 Příspěvky: 437 Bydliště: Praha
|
Zaslal: 13. květen 2008, 11:44:10 Předmět: |
|
|
FLVjek napsal: |
Kazdopadne nemuzu pouzit C# kvuli prenositelnosti na jine platformy. |
Tak na C# asi uplne zapomen. C++\Cli neni ani trochu multiplatformni. Vsechny vyhody co bys v C# mel jsou platformove zavisle a do cisteho C++ se budou prevadet velmi tezko. Myslim hlavne XNA specificke veci a C# kolekce a generiky - oboje bys asi v tom prototypu hojne vyuzival (jinak C# nema smysl!!). Tohle se neda jen tak jednoduse 1 ku jende nahradit necim v C++ (STL je uplne jina filosofie).
Takze vidim to tak, ze maximalne si v C# naprogramujes prototip, poresis vsechny problemy a algoritmy. Pak to cele rucne znuvu naprogramujes v C++. Snadneji to imho nepujde. Tedy nepotrebujes mixovat C++ a C# a ani C++/Cli. Nebo to chces prepisovat prubezne?? (imho prubezne prepisovani znamena zbytecne moc prace) _________________ - play with objects - www.krkal.org - |
|
Návrat nahoru |
|
|
FLVjek
Založen: 21. 09. 2007 Příspěvky: 125 Bydliště: Brno
|
Zaslal: 13. květen 2008, 12:35:24 Předmět: |
|
|
Prepisovat to uplne cele nema smysl..
Z toho jak to popisujes vyvozuju ze teda spoluprace C# a C++ neni nijak zvlast pohodlna. Soubezny vyvoj obou casti bych zrovna potreboval.
Kombinace C++ a Python by to prave umoznovala asi lip. Jenze to ztratim vyhodu dobryho IDE, UI designeru, atd. _________________ Martin Al!eN Procházka
ředitel závodu Hammerware, s.r.o.
následuj nás: http://twitter.com/hammerware/
příspívám na twitter CH: http://twitter.com/ceskehry/ |
|
Návrat nahoru |
|
|
Quiark
Založen: 29. 07. 2007 Příspěvky: 816 Bydliště: Chlívek 401
|
Zaslal: 13. květen 2008, 13:36:06 Předmět: |
|
|
To si ale s Pythonem vůbec nepomůžeš (mohlo by to být ještě horší). Nevím tak úplně přesně, jak si to představuješ, ale integrace C++ a .NETu je poměrně pohodlná záležitost.
Pokud jsem dobře pochopil jak to chceš udělat, myslím si, že budeš mít dost práce navíc (ať už použiješ python nebo C#). Budeš mít jednu prototypovou verzi v C#/Pythonu, k tomu glue kód v C++/CLI a potom část v čistém C++. To znamená, že ke každému přesunu z prototypu do C++ budeš muset vytvořit příslušný glue kód a po celou dobu ho udržovat. _________________ Mám strach |
|
Návrat nahoru |
|
|
FLVjek
Založen: 21. 09. 2007 Příspěvky: 125 Bydliště: Brno
|
Zaslal: 13. květen 2008, 13:44:25 Předmět: |
|
|
Jo, asi to tak bude muset byt. Kdyz budou rozhrani stabilni tak by to nemela byt takova hruza. Jeste jsme hru takoveho zanru nedelali, takze by se to melo vyplatit..
Jeste bych se chtel ujistit jestli je mozne pouzivat normalni STL v C++ kodu nebo je to omezene? _________________ Martin Al!eN Procházka
ředitel závodu Hammerware, s.r.o.
následuj nás: http://twitter.com/hammerware/
příspívám na twitter CH: http://twitter.com/ceskehry/ |
|
Návrat nahoru |
|
|
Quiark
Založen: 29. 07. 2007 Příspěvky: 816 Bydliště: Chlívek 401
|
Zaslal: 13. květen 2008, 13:57:22 Předmět: |
|
|
O žádném takovém omezení nevím. Mám kód, ve kterém je spousta šablon a dalších pokročilých C++ věcí (foobar2000 component API) společně s C++/CLI třídami a funguje to.
Doporučoval bych si nejdřív C++/CLI vyzkoušet, jak se s tím dělá, co jde, co nejde a podobně. _________________ Mám strach |
|
Návrat nahoru |
|
|
FLVjek
Založen: 21. 09. 2007 Příspěvky: 125 Bydliště: Brno
|
|
Návrat nahoru |
|
|
MD
Založen: 29. 07. 2007 Příspěvky: 437 Bydliště: Praha
|
Zaslal: 13. květen 2008, 15:53:26 Předmět: |
|
|
Ke slozitosti propojovani: Ono hodne zalezi na konkretni situaci. Pukud interface bude jen nejaky seznam funkci s jednoduchymi parametry tak je to prima. Jenze cim vic to bude objektove orientovane, tim komplikovanejsi to muze byt. Drzet si referenci na objekt z "druheho sveta" a starat se o jeho zivotnost je docela "zajimave".
Nekdy neni potreba ani ta C++/Cli mezi vrstva, pukud chces z C# volat C++ funkce staci je takto nadeklarovat:
kód: |
[DllImport("Mis.Alea.ClientSupport.dll", EntryPoint = "IPOSetNameW", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.Winapi)]
public static extern void SetName(int cursor, [MarshalAs(UnmanagedType.LPWStr)] string name);
|
Pokud budes mit veskery C++ kod se zapnutym CLI, tak volani .NET veci je temer v pohode, jen se naucis, ze napr. % je tracking reference a podobne.
Postupne to budes prepisovat a volani C# kodu a CLI specific veci budes odstranovat, nejak automaticky to asi nepujde (kolekce v .NETu jsou jine nez treba STL), ale postupne to asi jde. Prace navic to bude urcite, chce to zkusit.
STL jsem v C++/CLI pouzival a problemy s nim nebyly.
V praci jsme meli problemy s MFC (ale to myslim neni tvuj pripad) _________________ - play with objects - www.krkal.org - |
|
Návrat nahoru |
|
|
|