.[ ČeskéHry.cz ].
Zkusenosti s C++/CLI

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> .NET
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

PříspěvekZaslal: 13. květen 2008, 09:14:39    Předmět: Zkusenosti s C++/CLI Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
MD



Založen: 29. 07. 2007
Příspěvky: 437
Bydliště: Praha

PříspěvekZaslal: 13. květen 2008, 09:50:54    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
FLVjek



Založen: 21. 09. 2007
Příspěvky: 125
Bydliště: Brno

PříspěvekZaslal: 13. květen 2008, 10:04:15    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Augi



Založen: 28. 07. 2007
Příspěvky: 781
Bydliště: Čerčany

PříspěvekZaslal: 13. květen 2008, 10:19:33    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
FLVjek



Založen: 21. 09. 2007
Příspěvky: 125
Bydliště: Brno

PříspěvekZaslal: 13. květen 2008, 10:46:39    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
MD



Založen: 29. 07. 2007
Příspěvky: 437
Bydliště: Praha

PříspěvekZaslal: 13. květen 2008, 11:44:10    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
FLVjek



Založen: 21. 09. 2007
Příspěvky: 125
Bydliště: Brno

PříspěvekZaslal: 13. květen 2008, 12:35:24    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Quiark



Založen: 29. 07. 2007
Příspěvky: 816
Bydliště: Chlívek 401

PříspěvekZaslal: 13. květen 2008, 13:36:06    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
FLVjek



Založen: 21. 09. 2007
Příspěvky: 125
Bydliště: Brno

PříspěvekZaslal: 13. květen 2008, 13:44:25    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Quiark



Založen: 29. 07. 2007
Příspěvky: 816
Bydliště: Chlívek 401

PříspěvekZaslal: 13. květen 2008, 13:57:22    Předmět: Odpovědět s citátem

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
FLVjek



Založen: 21. 09. 2007
Příspěvky: 125
Bydliště: Brno

PříspěvekZaslal: 13. květen 2008, 14:20:21    Předmět: Odpovědět s citátem

No jasne, tak to je fajn.. dik
_________________
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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
MD



Založen: 29. 07. 2007
Příspěvky: 437
Bydliště: Praha

PříspěvekZaslal: 13. květen 2008, 15:53:26    Předmět: Odpovědět s citátem

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". Wink

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. Wink

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
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> .NET Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna