View previous topic :: View next topic |
Author |
Message |
dev
Joined: 27 Jul 2004 Posts: 206 Location: Latvija
|
Posted: Thu Jul 20, 2006 2:40 pm Post subject: unmanaged code + .NET |
|
Tā kā esmu ļoti slinks, tad vienmēr esmu veiksmīgi izvairijies no dažādu GUI aplikāciju rakstīšanas izmantojot tīru Win32API vai MFC.. Arī wxWidgeti man neiepatikās jo viss jāraksta ar roku. Tā nu nevelkot garumā, pastāstīšu pie kā esmu nonācis:
Īsi sakot jau kopš .NET 1.0 laikiem mani tirdija doma izmantot Windows formas priekš dažādu vizuālu toolju izveides kuri izmantotu grafisko dzinēju, kas būtu rakstīts uz vecā labā C++ bez .net. Taču man nepatika tas, ka nebija normālas iespējas to izdarīt - lādēt iekšā manuāli funkcijas no .dll (PInvoke) ir galīgi stulbi. Vakar atkal atcerējos šo visu un atcerējos, ka 2005 studijā ir jaunais C++/CLI, kas itkā atvieglo visu to lietu.. un patiesi - atliek vien manam dzinēja DLL projektam pielikt kompilatora parametru \clr un kautkādā vietā ierakstīt
#pragma managed (Viss dzinējs ir unmanaged, managed norāda uz kkādu tukšu apgabalu - tīri lai kompilators izveidotu t.s. entry pointu priekš .net) Kad tas ir izdarīts, tad manā nu jau tīri .NET projektā (C++) includēju dzinēju un pielinkoju .lib'u.. Tālāk gan ir pašam manuāli jākonvertē visi tipi no managed uz unmanaged utt, taču viss strādā ideāli.
Varu vizuāli uztaisīt savu formu ar .NET rīkiem un vajadzīgajā vietā izsaukt funkcijas no ārējā dzinēja - piemēram padot hWnd no kāda Windows Forms objekta dzinējam D3D/GL inicializācijai.
Rezumējot - ko tas dod: Rakstam dzinēju C++, rakstam spēli C++, rakstam Editorus/Tooljus utt izmantojot .NET un WindowsFormas u.c. labumus ko piedāvā .NET. |
|
Back to top |
|
|
Delfins
Joined: 20 Jan 2003 Posts: 60 Location: Riga
|
Posted: Thu Jul 20, 2006 4:19 pm Post subject: |
|
un vai ies bez NET freimworka uz w2k? Tāpat var to visu `pielinkot` arī webam, un remūti taisīt spēli... A jēga kāda :)
PS: MFC nav nemaz nekas jāraksta... vis ir tāpatās, kā Delphi/.NET dizainerī... Click-Click-DblClick un tik raksti kodu iekšā _________________ .... ....... _ o
... ... .. _\ \>
.... ....(_)/(_) |
|
Back to top |
|
|
dev
Joined: 27 Jul 2004 Posts: 206 Location: Latvija
|
Posted: Thu Jul 20, 2006 9:40 pm Post subject: |
|
Taadi cilveeki bez Net frameworka ir ar uguni jāmeklē mūsdienās..
Un jēga tev būtu skaidra ja tu zinātu cik ļoti plašas iespējas piedāvā .NET platforma un cik ļoti tā paātrina izstrādi. MFC un vecās Win32 api metodes jau var teikt ir mirušas jo pats M$ nākotni redz tikai caur .NET
Labi es nezinu kā citiem, bet priekš manis tas viss ir patīkams atklājums kas mani patiesi dara priecīgu |
|
Back to top |
|
|
Janka
Joined: 14 Nov 2005 Posts: 19 Location: Jelgava
|
Posted: Thu Jul 20, 2006 10:00 pm Post subject: |
|
Bet cik man ir sanaacis darboties ar .net vinsh ir stipri leenaak nekaa normaals c++ kods... Laigan tas darboties bija 2x un caur vb varbuut tas arii to padariija leenaaku, bet nez vai es persooniigi izmantsu .NET kkam nopietnaakam par kalkulatoru...
[EDIT] PS Shitais laikam offtopiks ar manu attieksmi pret .net |
|
Back to top |
|
|
Delfins
Joined: 20 Jan 2003 Posts: 60 Location: Riga
|
Posted: Fri Jul 21, 2006 7:34 am Post subject: |
|
dev wrote: | Taadi cilveeki bez Net frameworka ir ar uguni jāmeklē mūsdienās.. |
es dzīvoju bez .NET, un tā arī turpināšu...
Ir pareizi teikts, ka .NET bremzīgs... Un vispār, nav starpības kurā valodā raksti, gala rezultātā tiek iegūts mašīnkods, tikai vot ātruma ziņā tas nedaudz sako... Paskaties kaut vai uz jebkuru "smago" pakotni, kura pilda daudzas f-jas.. un nekas, bez .NET... A tas, ka izstrāde notiek ātrāk - nav arguments (nu ja vienīgi M$ - ātrāk piķi nokāst un spies usserus pirkt jaudīgākas mašīnas) _________________ .... ....... _ o
... ... .. _\ \>
.... ....(_)/(_) |
|
Back to top |
|
|
dev
Joined: 27 Jul 2004 Posts: 206 Location: Latvija
|
Posted: Fri Jul 21, 2006 9:46 am Post subject: |
|
Brr, tik bērnišķīga attieksme no jūsu puses.. jūs nesapratāt domu..
Es nesaku ka tagad spēles jāveido uz .NET, es saku ka atradu veidu kā .NET programmas savienot ar normālām C++ bibliotekām lai varētu izmantot vienu un to pašu dzinēju gan spēlē gan editoros/tooljos kuri būtu rakstīti uz .NET kur tas notiek daudz ātrāk kā jebkurā citā veidā.
Ja jūs apmierina MFC vai Win32 API tad tas nav priekš jums, bet man patīk .NET - Windows Formas, ērta Custom kontroļu izveide un visa cita milzīgā funkcionalitāte ko .NET piedāvā.. turklāt man ir tieksme arī skatīties uz priekšu nākotnē - uz Vistu un .NET 3.0 un to ka .NET nekur nepazudīs be tuvākajā laikā pilnībā aizvietos MFC un WinApi.
Runājot par ātrumu - izmantojot editoram un tooljiem ātrums ir pietiekams.. - turklāt, kā jau teicu, visa fiška ir tieši tajā, ka tie programmas moduļi, kas ir viskritiskākie (dzinējs) ir rakstīti tīrā nemenedžētā C++ un tiek pielinkoti klāt.. principā .NET darbina tikai čaulu (GUI)..
Un tas ka izstrāde ātrāka ir pats galvenais arguments - gamedev biznesā galvenais ir ātrāk un lētāk.
To Delfins:
Tas ka tu nelieto .NET nenozīmē ka viņš tev nav uz kompja (Ja vien tu nelieto Win). Uz Win .NET nāk kopā jau ar servispaku. Uz Linux arī ir pieejams tāda lieta kā Mono (.NET ports). Un tā kā es lieku priekšā izmantot .NET tikai priekš dev toolju izstrādes, tad gala userim viņš nemaz nebūs vajadzīgs, jo pati spēle būs taisīta bez .NET.
Es arī saprotu ka ir kruti teikt, ka tu esi tik spics vecis ka tev vieglāk visas GUI aplikācija uz MFC vai WinAPI uztraksīt.. taču ar šādu ignoranci tālu netiksi. Tas ir neapstrīdami, ka ar .NET to izdarīt ir daudz vieglāk un ātrāk. |
|
Back to top |
|
|
Delfins
Joined: 20 Jan 2003 Posts: 60 Location: Riga
|
Posted: Fri Jul 21, 2006 10:27 am Post subject: |
|
Nē nu vnk tu "atklāji, ka ūdeni var dzert".. loģiski, ja mums ir DLL, ir .lib/.h, tad to varēs izmantot praktiski jebkurā programmēšanas valodā, sākot no ASM līdz Java/.NET... jēga topikam... Praktiski tā vienmēr arī dara, ja vajag savienot 2 platformas, lai nepārrakstītu biznesloģiku :) _________________ .... ....... _ o
... ... .. _\ \>
.... ....(_)/(_) |
|
Back to top |
|
|
dev
Joined: 27 Jul 2004 Posts: 206 Location: Latvija
|
Posted: Fri Jul 21, 2006 10:38 am Post subject: |
|
Tu nelasi rūpīgi - nemenedžēto un menedžēto (.NET) kodu nav viegli savienot. Līdz šim bija tikai viens puslīdz normāls veids - manuāli ielādēt dll un katru vajadzīgo funkciju pa vienai manuāli ielādēt - nodeklarējot savā .NET programmā katrai ielādētajai funkcijai atbilstošu statisku funkciju.. tas ir baismīgi pretīgs darbs, turklāt arī jēga maza, jo spēles dzinējs visticamākais būs objektorientēts un nesastāvēs no dažām viegli izmantojamām funkcijām.
Tas par ko runāju es ir tas ko piedāvā VS2005 - C++/CLI, kas ļauj kompilēt hibrīdapplikācijas kurās menedžētais un nemenedžētais kods ir kopā. T.i. vari izmantot savu C++ dzinēju vai kādu nu citu bibliotēku patiešo no .NET programmām - ar visām klasēm, struktūrām un funkcijām. Tici vai nē, bet tas ir kautkas jauns. |
|
Back to top |
|
|
EDDY
Joined: 07 Oct 2005 Posts: 1610 Location: Dzimtā zeme, Latvija
|
Posted: Fri Jul 21, 2006 1:18 pm Post subject: |
|
Es personīgi rakstos uz vecā 2003. gada Studio.NET.
Neko labāku par šo vēl neesmu manijis. Vēl 2005. gada sākumā lasīju par 2005. gada Studio.NET un laidu siekalas universitātes bibliotēkā.
Tāda sajūta, ka viss .NET kodols ir pārveidots par 100 * n%.
Ehhh ... labprāt pasūtītu no kāda CD ar šo 2005. gada .NET, pašam slinkums kačāt. _________________ Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday |
|
Back to top |
|
|
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: Fri Jul 21, 2006 1:30 pm Post subject: |
|
Interesants topiks.Nekad nebiju pad iedomaajies sasleegt savu engine kopaa ar .NET.Patiesiibaa man veel nav izveidojies iists viedoklis par .NET.Es to izmantoju tikai-1... 2... gatavs aplikaacijaam (datubaazu menedzhments,teksta redaktori utt.) un iisti neredzu atshkjiriibu no MFC.Lasiiju wikipedia'aa un veel visaadaas vietaas,bet taa arii neatradu taadu informaaciju,kas paarliecinaatu,ka .NET IR LABAAKS,vai vismaz uzskaitiitu plusus un miinusus(varbuut varat iedot kaadu linku.Tikai nedodiet .NET tehnologjijas aprakstus-to visu jau esmu paarlasijies).
Un kaa darbojas tas LINUX .NET ports?Iisti nespeeju iedomaaties.LINUX un Windows tak ir diezgan atshkjiriigi.Kaa abi var izmantot vienu sisteemu (t.i. .NET) atshkjiriigu rezultaatu sasniegshanai? _________________ long time; /* know C */ |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Fri Jul 21, 2006 2:30 pm Post subject: |
|
A kā GTK+ un Qt un WxWidgets darbojas gan uz Linux un gan uz Windows? Tieši tāpatās - abiem uz katras OS apakšā ir leijeris, kas savieno OS specifisko stuffu ar savis veidoto API interfeisu.
.NET pēc būtības nav uz mašīnkodu kompilējams kods. Tas ir vairāk kas uz Java pusi - kods kompilējas uz IL baitkodu (kurš protams pēc tam runtaimā JIT rezultātā kompilējas uz mašīnkodu). Un nu Javas plusus/mīnusus ceru ka nav jāstāsta. Ļoti līdzīgi plusi un mīnusi ir arī .NET'am. |
|
Back to top |
|
|
elvman Indago Uzvarētājs
Joined: 09 Apr 2003 Posts: 1278 Location: Kuldiga
|
Posted: Fri Jul 21, 2006 2:48 pm Post subject: |
|
Ok.Palasiju WxWidgets dokumentaaciju.Apmeeram sapratu.
bubu wrote: | .NET pēc būtības nav uz mašīnkodu kompilējams kods. Tas ir vairāk kas uz Java pusi - kods kompilējas uz IL baitkodu (kurš protams pēc tam runtaimā JIT rezultātā kompilējas uz mašīnkodu). |
elvman wrote: | Tikai nedodiet .NET tehnologjijas aprakstus-to visu jau esmu paarlasijies |
Ar Java neesmu njeemies(nu tikai citu izveidotas aplikaacijas),tapec varbut varetu nedaudz apgaismot mani ar tiem plusiem un minusiem. _________________ long time; /* know C */ |
|
Back to top |
|
|
dev
Joined: 27 Jul 2004 Posts: 206 Location: Latvija
|
Posted: Fri Jul 21, 2006 3:27 pm Post subject: |
|
Nu par .NET plusiem - plusi ir tādi ka .NET ir jauns un paliek arvien jaunāks jo M$ drīzumā izlaidīs jau .NET 3.0 uz vistas.. .NET sastāv no liela bibliotēku kopuma (sadalīts daudzos neimspeisos) - principā iekš .NET ir klases un funkcijas priekš pilnīgi visa ko vien var iedomāties (patiešām viss viss viss ).
http://msdn2.microsoft.com/en-us/library/ms306608.aspx
Turklāt viss ir pēc vienota standrarta un ļoti viegli un ērti saprotams/lietojams. .NET pēc būtības ir Microsoft produkts, kas paredzēts Win32 API un MFC aizvietošanai (jamie jau vairākus gadus netiek apgreidoti)..
Neizmantot .NET būtībā nozīmē palikt pagātnē un izmantot vecās tehnoloģijas, kurām nav nākotnes.
Vel papildus bonusi -
.NET var izmantot vairākās valodās - C++, C#, VB.NET, ASP.NET utt un attiecīgi paver plašas iespējas lai dažādu valodu programmētāji varētu savienot savus veikumus (piemēram viens uztaisa C# kkaadu moduli un pēc tam cits šo moduli var izmantot no C++ vai VB.NET)
.NET rakstītās programmas ir menedžētas - t.i. nav jārūpējas par atmiņas atbrīvošanu un pointeriem - par to parūpējas pats .NET FW.
Spēļu dzinēju un citu programmu, kas prasa ļoti lielu ātrdarbību, rakstīšanai protams veljoprojām jāizmanto tīru C/C++, taču manis piedāvātais variants ļauj savienot abas tehnoloģijas.
Un vispār .NET nemaz tik lēns nav - piemēram DirectX .NET versija (managed DX) ir 97% ātra salīdzinot ar normālo DX, tā kā ja nav jātaisa supermoderna FPS spēle, tad piemēram kātu turn based stratēģiju vai ko tādu var mierīgi taisīt pat tikai uz tīra .NET
Un speciāli EDDY: mēs te runājam par .NET framework nevis par vizuālo studiju.net [url][/url] |
|
Back to top |
|
|
bubu Indago Uzvarētājs
Joined: 23 Mar 2004 Posts: 3223 Location: Riga
|
Posted: Fri Jul 21, 2006 3:49 pm Post subject: |
|
Viens .NET mīnuss priekš spēļu developēšanas, kas nāk prātā, ir automātiskais atmiņas menedžments - tu nekad nevari būt drošs, kad izsauksies garbage collectors un sāks atbrīvot objektus tādējādi radot performances zudumu. |
|
Back to top |
|
|
gazz
Joined: 03 Jan 2004 Posts: 355 Location: Teika
|
Posted: Sat Jul 22, 2006 12:28 am Post subject: |
|
imho, garbage collectoru var izsaukt manuaali |
|
Back to top |
|
|
|