Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

OE-NIK HP Haladó Programozás DLL használata és készítése Feladat.

Hasonló előadás


Az előadások a következő témára: "OE-NIK HP Haladó Programozás DLL használata és készítése Feladat."— Előadás másolata:

1 OE-NIK HP Haladó Programozás DLL használata és készítése Feladat

2 OE-NIK HP Haladó Programozás DLL használata és készítése Feladat

3 V1.0 Dynamic Link Library / Shared Object Program modul, ami tartalmazhat programkódot, megosztott erőforrásokat, melyek elérhetők más modulokból Külön fordított, a programhoz ténylegesen csak a futási időben kapcsolódik ( = dynamic) A memóriába csak egyszer töltődik be, több program is használhatja (= shared,.NET alatt ez korlátozottan igaz) A mai operációs rendszerek felhasználó számára elérhető programjai/moduljai kizárólagosan így működnek (bár több nyelvben is lehetséges statikus fordítást kérni, nem illik) Windows OS alatt meg kell különböztetni a natív és a felügyelt DLL-t: –Natív: OS/CPU számára értelmezhető bytekód: procedurális kód, egyszerű típusok, közvetlen HW elérés is akár –Felügyelt: Egy (vagy több).NET CLR osztály van benne 3 OE-NIK HP

4 V1.0 Klasszikus fordítás Object File: Egy köztes kód-reprezentáció, a fordító generálja a forráskód lefordítása után Tartalmazza: az értelmezett, fordított kódot és relokációs adatokat, utóbbit a linker használja a futtatható állomány generálásához A külső library kód static linking esetén bekerül az EXE/ELF állományba; dynamic linking esetén nem 4 OE-NIK HP FORRÁS (.cpp,.pas,.c,.cs,.*) ELŐFELDOLGOZÁS, FORDÍTÁS OBJECT FILE (.o,.obj) KÜLSŐ LIBRARY-K (.o,.obj,.so,.dll) LINKELÉS FUTTATHATÓ FILE (.exe)

5 V1.0 Static linking Az összes használt függvény/ erőforrás a programban van Ezek helye a fordítóprogram számára ismert Így fordításkor az ezekre történő hivatkozás előre megadható, mert az adott kód a program saját címterületén található Ugyanazt a függvényt több program is külön-külön betölti  pazarlás A Klasszikus (nem overlay) DOS programok (pl: Turbo Pascal) 5 OE-NIK HP SomeFunct1 SomeFunct2 SomeFunct3 Constant2 Constant1 Constant3 Program

6 V1.0 Dynamic linking Egyes függvények/erőforrások a program saját címterületén kívül vannak Ezek helye a fordítóprogram számára nem ismert Így fordításkor az ezekre történő hivatkozás dinamikus, futási időben derül ki a pontos hely (a betöltést az OS végzi) Ugyanazt a függvényt több program is együtt használja  megosztott erőforrás (~ Shared Object) A Legtöbb modern program így működik 6 OE-NIK HP Program Program DLL SomeFunct2 SomeFunct3

7 V1.0.NET JIT JIT = Just-In-Time Metódusonként, az OOP elvek miatt a sebességvesztés kicsi NGEN.EXE használható, de sebességet nem mindig növel Hasonló elv, de sokban más: Java Hotspot VM 7 OE-NIK HP

8 V1.0 Felügyelt vs. natív DLL-ek Natív DLL –Az aktuális könyvtárból vagy a %PATH%-ból töltődik be –Lassú betöltődés –%PATH% = a WINDOWS, SYSTEM, SYSTEM32 könyvtárak  DLL HELL Felügyelt DLL –Minden függvény egy DLL hívás volt, amit eddig használtunk –Egy projekt „References” része tárolja azt, hogy mely felügyelt DLL-ek érhetőek el az adott projektből, ezt kell szerkeszteni –MSDN-en megtalálható, hogy melyik osztály/névtér melyik DLL-ben található –A felügyelt DLL-ek közös tárban regisztráltak (GAC), ezáltal kezelhetőek a különféle verziók és függőségek –Gyors betöltődés, ugyanolyan sebességű, mintha a saját kód lenne 8 OE-NIK HP

9 V1.0 DLL elérése a.NET keretrendszerben Felügyelt DLL hívása –Referencia hozzáadása: Project/Add reference –Ezután a DLL-ben tárolt névtér és az abban tárolt osztályok/metódusok a szokványos módon elérhetőek Platform Invoke (P/Invoke: natív bytekód hívása felügyelt környezetből)  DllImport attribútum – using System.Runtime.InteropServices; — [DllImport("winmm.dll", SetLastError = true)] static extern bool PlaySound(string pszSound, UIntPtr hmod, uint fdwSound); — string fname PlaySound(fname, UIntPtr.Zero, 1); –Szignatúrák, importok: 9 OE-NIK HP

10 Haladó Programozás DLL használata és készítése Feladat

11 V1.0 DLL készítése 1 solution, 2 projekt: DLL készítő + DLL használó programok A DLL-t készítő alkalmazás típusa: Class Library A DLL-t használó alkalmazás referenciái közé fel kell venni a DLL file-t (a Visual Studio segít: akár magát a projektet is fel tudjuk venni, mint referenciát) A DLL file alapértelmezetten mindig a készülő EXE file mellé másolódik A referencia hozzáadása után a DLL-t használó alkalmazásban a DLL névtere és osztálya(i) szokványosan elérhetőek 11 OE-NIK HP

12 V1.0 Feladat Hozzon létre egy alkalmazást, ahol a játék főprogram modulokon keresztül kezeli a játékosokat User  felhasználó irányítja RandomEnemy  véletlenszerű mozgás FollowerEnemy  követő mozgás Oldja meg a feladatot referenciaként hozzáadott, illetve dinamikusan betöltött DLL segítségével! A közös osztályok letölthetőek a weboldalról 12 OE-NIK HP

13 V1.0 OE-NIK HP 13 Források Miklós Árpád prezentációja

14 OE-NIK HP

15


Letölteni ppt "OE-NIK HP Haladó Programozás DLL használata és készítése Feladat."

Hasonló előadás


Google Hirdetések