Professional Documents
Culture Documents
LP TRNH WINDOWS
Th vin lin kt ng
( (DLL DYNAMIC LINK LIBRARY) )
Gii thiu th vin lin kt Cc loi th vin lin kt Xy dng th vin lin kt ng
Trn Ngc Bo - Email: tnbao.dhsp@gmail.com
LP TRNH WINDOWS
Th vin lin kt ng
( (DLL DYNAMIC LINK LIBRARY) )
Gii thiu th vin lin kt Cc loi th vin lin kt Xy dng th vin lin kt ng
CT K ton
CT Nhn s
CT Tin lng
Source code
Source code
Source code
KT.EXE
NS.EXE
TL.EXE
CSDL
TRN NGC BO
CSDL
KHOA TON -TIN HC
CSDL
I HC S PHM TP.HCM (3)
CT K ton t
CT Nhn s
CT Tin lng
Source code
Source code
Source code
KT.EXE
NS.EXE
TL.EXE
CSDL
TRN NGC BO KHOA TON -TIN HC I HC S PHM TP.HCM (4)
Module K ton
KT.DLL
DataAccess.DLL
TL.DLL
CSDL
TRN NGC BO KHOA TON -TIN HC I HC S PHM TP.HCM (5)
Th vin l mt tp tin cha nhng hm hoc ti nguyn khc c sn m cc ng dng c th ly s dng. C ti nguyn ny th cho php nhiu d Cc thng h h hi ng dng cng chia s s dng d dng mt on m hoc ti nguyn Lin kt l cch thc m trnh bin dch nhng/kt hp cc on m thc thi ca nhng module th vin ( ) vo (Lib) chng trnh C 2 cch lin kt: Lin kt tnh Lin kt ng
TRN NGC BO KHOA TON -TIN HC I HC S PHM TP.HCM (6)
LP TRNH WINDOWS
Th vin lin kt ng
( (DLL DYNAMIC LINK LIBRARY) )
Gii thiu th vin lin kt Cc loi th vin lin kt Xy dng th vin lin kt ng
Th vin lin kt tnh (Static Linking Library) - Dng file: .LIB - Ch m lnh nh phn ca cc hm th vin Cha l h h h h th i - Dng nhng vo file chng trnh khi thc hin giai on g g g g lin kt (linking) ca qu trnh bin dch - Trnh bin dch s copy on m lnh ca cc hm th vin vo trong nhng module gi chng
TRN NGC BO
I HC S PHM TP.HCM
(8)
Th vin lin kt
Source code
Source code
Compiler
Compiler
LIB
Linker
OBJ files
AB.EXE
TRN NGC BO KHOA TON -TIN HC I HC S PHM TP.HCM (9)
u im
- D thc hin - Chng trnh c th chy c lp, khng cn cc file km theo - Chng trnh chy nhanh hn v khng cn thc hin load th vin
Khuyt im y
- on m lnh c nhng vo chng trnh ln, tn b nh. kch thc chng trnh
- on m lnh c nhng vo nhiu file chng trnh khc nhau khng ti u g - Khi thay i hm th vin trnh
TRN NGC BO
I HC S PHM TP.HCM
(10) 10)
TH VIN LIN KT NG
BI GI ING H PHN LP TR C N RNH WINDOWS S
- File .DLL
Cha m lnh nh phn ca cc hm th vin c ti vo b nh khi ng dng gi hm th vin Cn phi chp tp tin i km khi thc thi ng dng
TRN NGC BO
I HC S PHM TP.HCM
(11) 11)
TH VIN LIN KT NG
BI GI ING H PHN LP TR C N RNH WINDOWS S
Th vin lin kt
Source code S (Source file)
Source code
Compiler
Compiler
DLL
Linker
OBJ files
AB.EXE
TRN NGC BO KHOA TON -TIN HC I HC S PHM TP.HCM (12) 12)
TH VIN LIN KT NG
BI GI ING H PHN LP TR C N RNH WINDOWS S
u im
- M lnh ca cc hm s khng c nhng vo trong file chng trnh ca ng g g g g g dng Kch thc ca ng dng nh - ng dng ch cn lu thng tin ca hm th vin, khi cn h iu hnh s load cc hm th vin vo b nh Nhiu ng dng c th dng chung 1 DLL. Do , tit kim b nh (thng thng mi ng dng c data ring, nhng c th chia s m lnh) Khi khng cn s dng, c th gii phng DLL khi b nh Khi cn nng cp, ch cn thay th file DLL, cc file chng trnh khc khng b nh hng
Khuyt im
- Kh s dng hn
TRN NGC BO
I HC S PHM TP.HCM
(13) 13)
LP TRNH WINDOWS
Th vin lin kt ng
( (DLL DYNAMIC LINK LIBRARY) )
Gii thiu th vin lin kt Cc loi th vin lin kt Xy dng th vin lin kt ng
XY DNG DLL
BI GI ING H PHN LP TR C N RNH WINDOWS S
TRN NGC BO
I HC S PHM TP.HCM
(15) 15)
XY DNG DLL
BI GI ING H PHN LP TR C N RNH WINDOWS S
Chn loi Project: MFC AppWizard(Dll) MFC AppWizard(Dll) TRN NGC BO KHOA TON -TIN HC I HC S PHM TP.HCM (16) 16)
To lp DLL p Ph tch cc khai bo n h kh b Phn tch hm DllMain Demo lin kt DLL vi ng dng
TRN NGC BO
I HC S PHM TP.HCM
(17) 17)
New
Chn loi project Win32 Dynamic Link Library Win32 Library t tn project trong Project name Xc nh ng dn th mc trong Location Step 1: Chn loi ng dng A DLL that exports some St 1 Ch l i d th t t symbols Nh Finish kt thc n
TRN NGC BO
I HC S PHM TP.HCM
(18) 18)
TRN NGC BO
I HC S PHM TP.HCM
(21) 21)
DLL_PROCESS_DETACH: Th vin DLL c gii phng khi vng nh ca tin trnh do 1 trong 3
nguyn nhn: np DLL khng thnh cng tin trnh kt thc, hay tin trnh gi cng, thc hm FreeLibrary y l thi im gii phng cc bin hay ti nguyn m DLL cp pht
TRN NGC BO
I HC S PHM TP.HCM
(22) 22)
TRN NGC BO
I HC S PHM TP.HCM
(23) 23)
To Project loi Win32 Dynamic Link Library, vi tn MyWin32DLL y To Project loi Win32 Application vi tn l MyWin32Sample y p Bin dch v chy chng trnh Copy tp tin MyWin32DLL.DLL vo th mc Debug ca MyWin32Sample Copy tp tin MyWin32DLL.LIB v tp tin MyWin32DLL.H vo th mc MyWin32Sample Add tp tin MyWin32DLL.LIB vo project y p MyWin32Sample
TRN NGC BO KHOA TON -TIN HC I HC S PHM TP.HCM (24) 24)
nh h hm h ngha h export t
Cc dng th vin DLL ca MFC Lin kt DLL vi ng dng
TRN NGC BO
I HC S PHM TP.HCM
(25) 25)
New
Chn loi project MFC AppWizard (dll) MFC (dll) t tn project trong Project name Xc nh ng dn th mc trong Location Step 1: Chn loi ng dng R St 1 Ch l i d Regular DLL using l i shared MFC DLL hoc MFC Extension DLL Nh Finish kt thc n
TRN NGC BO
I HC S PHM TP.HCM
(26) 26)
I HC S PHM TP.HCM
(27) 27)
Regular DLL: Ch export cc hm theo dng C-style, khng th export class, hm thnh
phn ca class cc hm nh ngha chng (overloaded function) class, (o erloaded f nction) Cc ng dng Win32 v MFC u c th s dng loi DLL with MFC statically linked: DLL s c lin kt vi cc DLL chun ca MFC with linked : theo cch lin kt tnh using shared MFC DLL: DLL s c lin kt vi cc DLL chun ca MFC theo h lin th cch li kt ng
MFC Extention DLL: Cho php export cc class. ng dng khc c th to cc project t cc
class, hoc xy dng cc li k tha t class ny. DLL s c lin kt vi cc DLL chun ca MFC theo cch lin kt ng Ch c cc ng dng MFC mi c th dng vi loi DLL ny.
TRN NGC BO
I HC S PHM TP.HCM
(28) 28)
TRN NGC BO
I HC S PHM TP.HCM
(29) 29)
TRN NGC BO
I HC S PHM TP.HCM
(30) 30)
ng dng s gi hm export ca DLL mt cch tng minh (ging nh cch gi hm ca th vin lin kt tnh) ng dng cn phi lin kt vi file th vin nhp (Import Lib) ca DLL ng dng s np DLL ngay thi im u tin chng trnh ch u im: - n gin, d s dng v ging nh cch dng th vin tnh Khuyt im: - Nu khng tm ra DLL lc np, ng dng s kt thc ngay
TRN NGC BO
I HC S PHM TP.HCM
(31) 31)
Cch thc hin - Add file th vin nhp (DLLName.Lib) vo project - Khai bo cc hm, bin IMPORT t DLL - Gi hm ca th vin DLL nh gi hm bnh thng
TRN NGC BO
I HC S PHM TP.HCM
(32) 32)
ng dng s gi hm LoadLibrary hay LoadLibraryEx np DLL ti thi im cn thit Sau khi DLL c np, ng dng s dng hm GetProcessAddress ly a ch ca hm export trong DLL ng dng s gi hm export trong DLL bng cch dng con tr hm tr v t hm GetProcessAddress u im: - Cch ny khng cn dng n file th vin nhp (DllName LIB) (DllName.LIB) - C th x l li khng tm thy DLL, trnh kt thc ng dng tc thi, th hin
thng bo li do ng dng qui nh
TRN NGC BO
I HC S PHM TP.HCM
(34) 34)
TRN NGC BO
I HC S PHM TP.HCM
(35) 35)
CView::OnLButtonDown(nFlags, point); }
TRN NGC BO
I HC S PHM TP.HCM
(37) 37)
TRN NGC BO
I HC S PHM TP.HCM
(38) 38)
CView::OnLButtonDown(nFlags, point); } TRN NGC BO KHOA TON -TIN HC I HC S PHM TP.HCM (39) 39)
TRN NGC BO
I HC S PHM TP.HCM
(40) 40)
TRN NGC BO
I HC S PHM TP.HCM
(41) 41)
Charles Petzold (1998), Programming Windows Fifth Edition, Microsoft Press Chapter 21 David J. Kruglinski (1998), Programming Microsoft Visual C++ Fifth Edition, Microsoft Press Chapter 22
TRN NGC BO
I HC S PHM TP.HCM
(42) 42)