.[ ČeskéHry.cz ].
Grafické knihovny pro C#
Jdi na stránku Předchozí  1, 2
 
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
Tringi



Založen: 28. 07. 2007
Příspěvky: 289

PříspěvekZaslal: 5. březen 2013, 16:33:28    Předmět: Odpovědět s citátem

CLR EXE se tváří jako normální 32 bitový PE/COFF.
Všechna data má v ".text" sekci zamaskovaná jako kód a importuje pouze _CorExeMain z mscoree.dll. Pokud to chybí, není .NET nainstalován a program se nespustí s normální chybou, jako když chybí jakákoliv jiná DLL. Entry point CLR EXE je ale jen malý zavaděč, který prostě zavolá _CorExeMain a to už kouzlí (inicializace prostředí, provádění/kompilace MSIL, zametání, ...).
U CLR DLL je to obdobně, jen trochu komplikovanější.

EDIT:
Celý ten malý zavaděč je jen jedna instrukce (nepřímý skok):
FF 25 00 20 40 00 <=> jmp DWORD PTR ds:0x402000
Kdy na adresu 0:00402000 se právě naloaduje adresa _CorExeMain
_________________
WWW | GitHub | TW


Naposledy upravil Tringi dne 5. březen 2013, 16:46:47, celkově upraveno 1 krát
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Poky



Založen: 29. 06. 2009
Příspěvky: 184
Bydliště: Písek / Plzeň

PříspěvekZaslal: 5. březen 2013, 16:46:34    Předmět: Odpovědět s citátem

Takže jestli to chápu dobře, tak je to vpodstatě možnost B) - OS pustí to exe a to takřka ihned odskočí na _CorExeMain (které když nemá, tak vyhodí chybu) a ta funkce(?) dál dekoduje to exe už jako nějaký bytekód... je to tak?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Tringi



Založen: 28. 07. 2007
Příspěvky: 289

PříspěvekZaslal: 5. březen 2013, 16:50:59    Předmět: Odpovědět s citátem

Jop, zhruba, pak už to je v režii .NETu o kterém zas tak moc nevím.
_________________
WWW | GitHub | TW
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Poky



Založen: 29. 06. 2009
Příspěvky: 184
Bydliště: Písek / Plzeň

PříspěvekZaslal: 5. březen 2013, 16:54:26    Předmět: Odpovědět s citátem

Super. Díky moc.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
if.then



Založen: 13. 04. 2008
Příspěvky: 579

PříspěvekZaslal: 5. březen 2013, 18:04:43    Předmět: Odpovědět s citátem

Wau. Začal jsem psát o tom, jak fungují executable files, pro jistotu jsem si otevřel Wiki na Portable Executable a je tam to, na co se ptáš.

No a jak vidím, tak to Tringi navíc ještě teď zodpověděl. Člověk se nezavděčí. Very Happy
_________________
For guns and glory, go to www.ceske-hry.cz.
For work and worry, execute VC++.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
cooty125



Založen: 22. 11. 2011
Příspěvky: 40

PříspěvekZaslal: 19. duben 2013, 13:38:56    Předmět: Re: Grafické knihovny pro C# Odpovědět s citátem

Poky napsal:
Čau, právě začínám pracovat na bakalářské práci a potřeboval bych od vás trochu pomoc. Jak už název vlákna napovídá, jedná se mi o grafické knihovny pro tvorbu "okýnek" v C# (jako třeba GTK# apod.). Pokud znáte nějaké, prosím napište sem (klidně i nějaké neznáme). Jinak postačí klidně jen názvy, zbytek si dohledám sám. Jenom mi jde o to, abych se měl od čeho "odpíchnout".

Díky moc.


Ahoj, nevím zda jsem tvůj problém přesně pochopil. Ale pomocí handle IntPtr se dá obsah okna dostat opravdu kamkoliv. Třeba i do prohlížeče. Nebo z XNA, DirectX, OpenGl, Nebo může běžet i bez okna třeba místo pozadí plochy. Možností je spoustu.
Jedná se o tzv Platform Invoke

http://msdn.microsoft.com/en-us/library/aa288468(v=vs.71).aspx

Tady je příklad využití možností windows externích metod:
kód:

[DllImport("msvcrt.dll")]
public static extern int puts(string c);


Doufám, že jsem aspoň trochu pomohl.
_________________
Programátor v C# XNA a 3D Grafik.
http://www.xna.mzf.cz/
http://www.czechcode.hu.cz/
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovi WWW stránky MSN Messenger
Poky



Založen: 29. 06. 2009
Příspěvky: 184
Bydliště: Písek / Plzeň

PříspěvekZaslal: 20. duben 2013, 11:11:22    Předmět: Odpovědět s citátem

Promiň, ale nepomohl.

Téma BP je: Grafické nadstavby pro .NET

Zadání mojí BP je přesně toto:

Uveďte kompatibilní platformy pro jednotlivé nadstavby.
Navrhněte ukázkové příklady typu jednoduchý dialog, vykreslení bitmapy, vykreslení grafu, apod.
Ověřte příklady na pokud možno největším počtu platforem.
Uveďte možnost využití alternativních vývojových prostředí.
V příkladech použijte jazyk C#.

Jinak po konzultaci s vedoucím, mám udělat využití WinForms - ty podle specifikace Mona jsou 100% implementovány do verze 2.0 .NET FW a pak najít nějaké čistě multiplatformní, tedy GTK#, Qt4DotNet atd...

Takže pokud znáte nějaké další, tak sem snimi.
Díky Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
cooty125



Založen: 22. 11. 2011
Příspěvky: 40

PříspěvekZaslal: 20. duben 2013, 16:22:56    Předmět: Odpovědět s citátem

Poky napsal:
Promiň, ale nepomohl.

Téma BP je: Grafické nadstavby pro .NET

Zadání mojí BP je přesně toto:

Uveďte kompatibilní platformy pro jednotlivé nadstavby.
Navrhněte ukázkové příklady typu jednoduchý dialog, vykreslení bitmapy, vykreslení grafu, apod.
Ověřte příklady na pokud možno největším počtu platforem.
Uveďte možnost využití alternativních vývojových prostředí.
V příkladech použijte jazyk C#.

Jinak po konzultaci s vedoucím, mám udělat využití WinForms - ty podle specifikace Mona jsou 100% implementovány do verze 2.0 .NET FW a pak najít nějaké čistě multiplatformní, tedy GTK#, Qt4DotNet atd...

Takže pokud znáte nějaké další, tak sem snimi.
Díky Smile


Tak jsem pro tebe sehnal několik odkazů:
http://sourceforge.net/projects/taoframework/
http://www.mono-project.com/Mono.Cairo
http://www.antigrain.com/
http://tirania.org/blog/archive/2008/Apr-17.html
http://www.mesa3d.org/
https://github.com/praeclarum/CrossGraphics
_________________
Programátor v C# XNA a 3D Grafik.
http://www.xna.mzf.cz/
http://www.czechcode.hu.cz/
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovi WWW stránky MSN Messenger
Poky



Založen: 29. 06. 2009
Příspěvky: 184
Bydliště: Písek / Plzeň

PříspěvekZaslal: 21. duben 2013, 08:22:26    Předmět: Odpovědět s citátem

Dík za snahu, ale opět si mi nepomohl Sad

To co si našel jsou příliš low-level nadstavby. Já potřebuju nadstavby schopné sami již poskytnout základ na tvorbu "okeních" aplikací. Tedy musí obsahovat již hotové třídy jako Button, Label, TextBox, ListBox, PictureBox atd. atd...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
TeaTime



Založen: 17. 06. 2011
Příspěvky: 264

PříspěvekZaslal: 21. duben 2013, 18:25:40    Předmět: Odpovědět s citátem

tadá!

http://www.ogre3d.org/tikiwiki/tiki-index.php?page=-GUI

Asi šest C# knihoven a devět C++ knihoven. Myslím, že řada z nich ani nevyžaduje Ogre.

PS: ale přijde mi to jako docela nudná bakalářka
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Poky



Založen: 29. 06. 2009
Příspěvky: 184
Bydliště: Písek / Plzeň

PříspěvekZaslal: 22. duben 2013, 12:22:14    Předmět: Odpovědět s citátem

Dík, kouknu na to ?Smile

citace:
PS: ale přijde mi to jako docela nudná bakalářka

Vybíral sem ji až v 2. kole. Mojí bakalářku Inovace řídící jednotky RCX (Lego Mindstorms) mi zrušil :-/ - Jinak máš pravdu, nudná je - testování na 5 verzích linuxu, na MacOS a Androidu a téměř vše přes šíleně pomalou virtuálku není zrovna zábava Very Happy
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Al



Založen: 23. 10. 2007
Příspěvky: 196

PříspěvekZaslal: 20. květen 2013, 20:11:51    Předmět: Odpovědět s citátem

Ještě dva postřehy k tomu spouštění EXE programů v .NETu:
1. Je zajímavé sledovat, jak se to spouští v Linuxu, kde není možnost spustit opravdový Win32 kód. Tohle mě přivádí k otázce, proč tam ten Win32 zavaděč vůbec je, když to jde snadno spustit i bez něj a bylo by to bez něj daleko čistější. (Jednou, až MS přestane podporovat Win32 jako platformu, stejně se to bude muset spouštět bez toho zavaděče.)
2. Když není nainstalovaný žádný .NET ve Windows, tak to spadne s nějakou zcela absurdní hláškou. Tohle chování je už hodně daleko za hranicí mého chápání.

No a když už ten program běží, tak je to podstatně složitější, než jak to vzevrubně popsal Tringi. Protože tam probíhá postupná kompilace po jednotlivých metodách a překládá se vždykcy o jednu metodu dopředu, než kam se to volá. A ty přeložené a nepřeložené metody tam dokáží koexistovat spolu v jedné tabulce metod vtable (zde je to asi hodně podobné fungování C++).

Jen nevím, proč je potřeba tohle řešit v závěrečné práci na grafické knihovny.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
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
Jdi na stránku Předchozí  1, 2
Strana 2 z 2

 
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