Windows Form Bai 8
Transcript of Windows Form Bai 8
-
7/29/2019 Windows Form Bai 8
1/43
i Hc S Phm Tp. H Ch MinhKhoa Ton Tin Hc LP TRNH WINDOWSLP TRNH WINDOWS
Thvin lin k t ngThvin lin k t ngDLLDLL DYNAMIC LINK LIBRARYDYNAMIC LINK LIBRARY
Gii thiu thvin lin kt Cc loi thvin lin kt
Trn Ngc Bo - Email: [email protected]
-
7/29/2019 Windows Form Bai 8
2/43
i Hc S Phm Tp. H Ch MinhKhoa Ton Tin Hc LP TRNH WINDOWSLP TRNH WINDOWS
Thvin lin k t ngThvin lin k t ngDLLDLL DYNAMIC LINK LIBRARYDYNAMIC LINK LIBRARY
Gii thiu thvin lin kt Cc loi thvin lin kt
-
7/29/2019 Windows Form Bai 8
3/43
-
7/29/2019 Windows Form Bai 8
4/43
GII THIU LIN KT L G ?
NDOW
NDOW
--DLLDLL
CT KCT K CT NhnCT Nhn CT TinCT Tin
N
HWI
N
HWI
NG
NG
o no n ss
LPT
LPT
KT
KT
SourceSource SourceSource SourceSource
CPH
CPH
LINL
IN codecode codecode
NGH
NGH
V
IN
V
IN
KT.EXEKT.EXE NS.EXENS.EXE TL.EXETL.EXE
BIG
BIG
THTH
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((44))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((44))CSDLCSDL
-
7/29/2019 Windows Form Bai 8
5/43
GII THIU LIN KT L G ?
NDOW
NDOW
--DLLDLL
ModuleModule ModuleModule
N
HWI
N
HWI
NG
NG
LPT
LPT
KT
KT
CPH
CPH
LINL
INKT.DLLKT.DLL DataAccess.DLLDataAccess.DLL TL.DLLTL.DLL
NGH
NGH
V
IN
V
IN
BIG
BIG
THTH
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((55))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((55))
-
7/29/2019 Windows Form Bai 8
6/43
GII THIU LIN KT L G ?
NDOW
NDOW
--DLLDLL Th vin l mt tp tin cha nhng hm hoc ti
nguyn khc c sn m cc ng dng c th ly s
N
HWI
N
HWI
NG
NG ng. c nguy n n y ng c o p p n u ng
dng cng chia s s dng d dng mt on m hoc ti
LPT
LPT
KT
KT
Lin kt l cch thc m trnh bin dch nhng/kt hp
CPH
CPH
LINL
IN cc on m thc thi c a nhng module th vin (Lib) vochng trnh
NGH
NGH
VIN
VIN
C 2 cch lin kt:
BIG
BIG
THTH
Lin kt ng
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((66))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((66))
-
7/29/2019 Windows Form Bai 8
7/43
i Hc S Phm Tp. H Ch MinhKhoa Ton Tin Hc LP TRNH WINDOWSLP TRNH WINDOWS
Thvin lin k t ngThvin lin k t ngDLLDLL DYNAMIC LINK LIBRARYDYNAMIC LINK LIBRARY
Gii thiu thvin lin kt Cc loi thvin lin kt
-
7/29/2019 Windows Form Bai 8
8/43
GII THIU CC LOI THVIN
NDOW
NDOW
--DLLDLL Th vin lin kt tnh (Static Linking Library)
N
HWI
N
HWI
NG
NG - Dng file: .LIB
LPT
LPT
KT
KT
- a m n n p n c a c c m t v n
- Dng nhng vo file chng trnh khi thc hin giai on
CPH
CPH
LINL
IN lin kt (linking) ca qu trnh bin dch
-
NGH
NGH
VIN
VIN
vo trong nhng module gi chng
BIG
BIG
THTH
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((88))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((88))
-
7/29/2019 Windows Form Bai 8
9/43
-
7/29/2019 Windows Form Bai 8
10/43
THVIN LIN KT TNH
NDOW
NDOW
--DLLDLL u im
N
HWI
N
HWI
NG
NG
-
- Chng trnh c th chy c lp, khng cn cc file km theo
LPT
LPT
KT
KT
- Chng trnh chy nhanh hn v khng cn thc hin load th vin
Khu t im
CPH
CPH
LINL
IN - on m lnh c nhng vo chng trnh kch thc chng trnh
NGH
NGH
VIN
VIN
- on m lnh c nhng vo nhiu file chng trnh khc nhau
khn ti u
BIG
BIG
THTH - Khi thay i hm th vinphi bin dch li ton b cc file chng
trnh
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((1010))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((1010))
-
7/29/2019 Windows Form Bai 8
11/43
THVIN LIN KT NG
NDOW
NDOW
--DLLDLL Th vin lin kt ng (Dynamic Linking Library)
N
HWI
N
HWI
NG
NG - Dng file: .LIB v DLL
-
LPT
LPT
KT
KT
.
Th vin nhp (Import Library)
Khng cha m lnh ca cc hm
CPH
CPH
LINL
IN
Chcha cc thng tin c n thi t hi u hnh np th vin DLL v xc nhcc hm export trong DLL
S dng khi dng cch thc load time dynamic linking
NGH
NGH
VIN
VIN
- File .DLL
Cha m lnh nh phn ca cc hm th vin
BIG
BIG
THTH
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 BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((1111))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((1111))
-
7/29/2019 Windows Form Bai 8
12/43
THVIN LIN KT NG
NDOW
NDOW
--DLLDLL Th vin lin kt Chng trnh chnh
N
HWI
N
HWI
NG
NG
Source codeSource code
(Source file)(Source file)Source codeSource code
LPT
LPT
KT
KT
Source codeSource code
CPH
CPH
LINL
IN CompilerCompiler CompilerCompiler(Header files)(Header files)
NGH
NGH
VIN
VIN
DLLDLL OBJ filesOBJ files
LinkerLinker
BIG
BIG
THTH
AB.EXEAB.EXE
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((1212))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((1212))
-
7/29/2019 Windows Form Bai 8
13/43
THVIN LIN KT NG
NDOW
NDOW
--DLLDLL u im
- M lnh ca cc hm s khn c nhn vo tron file chn trnh ca n
N
HWI
N
HWI
NG
NG dng Kch thc ca ng dng nh
- ng dng chcn lu thng tin ca hm th vin, khi cn hiu hnh s load cc
LPT
LPT
KT
KT
- Nhiu ng dng c th dng chung 1 DLL. Do , tit kim b nh (thng thngmi ng dng c data ring, nhng c th chia s m lnh)
CPH
CPH
LINL
IN- Khi khng cn s dng, c th gii phng DLL khi b nh- Khi cn nng cp, chcn thay th file DLL, cc file chng trnh khc khng b
NGH
NGH
VIN
VIN
Khuyt im
BIG
BIG
THTH
- Kh s dng hn
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((1313))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((1313))
-
7/29/2019 Windows Form Bai 8
14/43
i Hc S Phm Tp. H Ch MinhKhoa Ton Tin Hc LP TRNH WINDOWSLP TRNH WINDOWS
Thvin lin k t ngThvin lin k t ngDLLDLL DYNAMIC LINK LIBRARYDYNAMIC LINK LIBRARY
Gii thiu thvin lin kt Cc loi thvin lin kt
-
7/29/2019 Windows Form Bai 8
15/43
XY DNG DLL
NDOW
NDOW
--DLLDLL
Xy dng th vin DLL bng th vin Win32API
N
HWI
N
HWI
NG
NG
LPT
LPT
KT
KT
CPH
CPH
LINL
IN
NGH
NGH
VIN
VIN
BIG
BIG
THTH
Chn loi Project:
Win32 Dynamic Link Library
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((1515))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((1515))
-
7/29/2019 Windows Form Bai 8
16/43
XY DNG DLL
NDOW
NDOW
--DLLDLL
Xy dng th vin DLL bng th vin MFC
N
HWI
N
HWI
NG
NG
LPT
LPT
KT
KT
CPH
CPH
LINL
IN
NGH
NGH
VIN
VIN
BIG
BIG
THTH
Chn loi Project:
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((1616))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((1616))
-
7/29/2019 Windows Form Bai 8
17/43
XY DNG DLL DNG THVIN WIN32 API
NDOW
NDOW
--DLLDLL
T o l DLL
N
HWI
N
HWI
NG
NG
LPT
LPT
KT
KT Ph n t ch c c khai b o
CPH
CPH
LINL
IN Phn tch hm DllMain
NGH
NGH
VIN
VIN
BIG
BIG
THTH
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((1717))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((1717))
-
7/29/2019 Windows Form Bai 8
18/43
XY DNG DLL DNG THVIN WIN32 API
NDOW
NDOW
--DLLDLL Chn menu File New
N
HWI
N
HWI
NG
NG Chn Tab Projects
LPT
LPT
KT
KT
t tn project trong Project name
CPH
CPH
LINL
IN Xc nh ng dn thmc trongLocation
NGH
NGH
VIN
VIN ep : n o ng ng a expor s some
symbols
BIG
BIG
THTH Nh nFinish k t th c
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((1818))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((1818))
-
7/29/2019 Windows Form Bai 8
19/43
XY DNG DLL DNG THVIN WIN32 API
NDOW
NDOW
--DLLDLL dllexport: cung cp hm, d liu, ti nguyn,cho cc chng trnh/DLL
khc s dng
N
HWI
N
HWI
NG
NG #define DLLEXPORT __declspec(dllexport)
LPT
LPT
KT
KT
DLLEXPORT int nMyValue;
//Khai bo 1 hm xut khu
CPH
CPH
LINL
IN dllimport: load 1 hm, d liu, ti nguyn,t 1 DLL khc s dng
NGH
NGH
VIN
VIN
#define DLLIMPORT __declspec(dllimport)
BIG
BIG
THTH
DLLIMPORT int nMyValue;
//Khai bo 1 hm nhp khu
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((1919))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((1919))
-
7/29/2019 Windows Form Bai 8
20/43
XY DNG DLL DNG THVIN WIN32 API
NDOW
NDOW
--DLLDLL
Phn tch hm DllMain
N
HWI
N
HWI
NG
NG BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID l Reserved
LPT
LPT
KT
KT
)
{
CPH
CPH
LINL
IN
_ _ _
{case DLL_PROCESS_ATTACH:
NGH
NGH
VIN
VIN _ _
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
BIG
BIG
THTH }
return TRUE;
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((2020))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((2020))
-
7/29/2019 Windows Form Bai 8
21/43
XY DNG DLL DNG THVIN WIN32 API
NDOW
NDOW
--DLLDLL Phn tch hm DllMain (tt)
N
HWI
N
HWI
NG
NG Hm DllMain l hm chnh ca DLL
Hm DllMain c gi khi DLL c load vo b nh hoc khi Windows
LPT
LPT
KT
KT
y u c u c un oa n
Hm DllMain c nhim v khi to hoc gii phng cc ti nguyn s
CPH
CPH
LINL
IN
Cc tham s:
NGH
NGH
VIN
VIN ,
ul_reason_for_call: l do hm DllMain c gi
BIG
BIG
THTH
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((2121))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((2121))
-
7/29/2019 Windows Form Bai 8
22/43
XY DNG DLL DNG THVIN WIN32 API
NDOW
NDOW
--DLLDLL Phn tch hm DllMain (tt)
DLL_PROCESS_ATTACH:
N
HWI
N
HWI
NG
NG
Hm DllMain vi tham s DLL_PROCESS_ATTACH c gi khi process tin
hnh load DLL
LPT
LPT
KT
KT
Th vin DLL ang c Windows nh x vo vng nh ca tin trnh (thchin li gi DLL)
CPH
CPH
LINL
IN
,
thao tc cn thit khc trc khi cho php tin trnh gi n cc hm ca thvin
NGH
NGH
VIN
VIN DLL_PROCESS_DETACH:
Th vin DLL c gii phng khi vng nh ca tin trnh do 1 trong 3
BIG
BIG
THTH
, ,
hm FreeLibrary
y l thi im gii phng cc bin hay ti nguyn m DLL cp pht
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((2222))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((2222))
-
7/29/2019 Windows Form Bai 8
23/43
XY DNG DLL DNG THVIN WIN32 API
NDOW
NDOW
--DLLDLL Phn tch hm DllMain (tt)
N
HWI
N
HWI
NG
NG
_ _
Khi tin trnh to mi mt tiu trnh (Thread), Windows gi hm DllMain ca tt
c cc th vin DLL ang c s dng vi tin trnh .
LPT
LPT
KT
KT y l thi im khi to cc bin dng cho tiu trnh
Lu rng tnh hung ny chxy ra khi tiu trnh c to sau khi th vin
CPH
CPH
LIN
LIN
oa v o n r n , ng a n u c oa ng n oa rary
tt c cc tiu trnh hin c (trong tin trnh) s khng gi hm DllMain vi thams ny.
NGH
NGH
VIN
VIN
DLL_THREAD_DETACH:
Khi 1 tiu trnh kt thc, Windows gi hm DllMain ca tt c cc th vin DLL
BIG
BIG
THTH
ang c s dng vi ti u trnh ny.
y l thi im gii phng cc bin dng cho tiu trnh
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((2323))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((2323))
-
7/29/2019 Windows Form Bai 8
24/43
LIN KT DLL VI NG DNG WIN32 API
NDOW
NDOW
--DLLDLL To Project loiWin32 Dynamic Link Library, vi tn
M Win32DLL
NHWI
NHWI
NG
NG
To Project loiWin32 Applicationvi tn l
M Win32Sam le
LPT
LPT
KT
KT
Bin dch v chy chng trnh
CPH
CPH
LIN
LIN
Copy tp tin MyWin32DLL.DLL vo thmc Debug caMyWin32Sample
NGH
NGH
VIN
VIN Copy tp tin MyWin32DLL.LIB v tp tin MyWin32DLL.H
vo thmc MyWin32Sample
BIG
BIG
THTH Add tp tin MyWin32DLL.LIB vo project
M Win32Sam le
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((2424))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((2424))
-
7/29/2019 Windows Form Bai 8
25/43
XY DNG DLL DNG THVIN MFC
NDOW
NDOW
--DLLDLL
T o l DLL
NHWI
NHWI
NG
NG
LPT
LPT
KT
KT
CPH
CPH
LIN
LIN
n ng a m export
NGH
NGH
VIN
VIN
Cc dng thvin DLL ca MFC
BIG
BIG
THTH
Lin kt DLL vi ng dng
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((2525))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((2525))
-
7/29/2019 Windows Form Bai 8
26/43
XY DNG DLL DNG THVIN MFC
NDOW
NDOW
--DLLDLL Chn menu File New
NHWI
NHWI
NG
NG Chn Tab Projects
LPT
LPT
KT
KT
t tn project trong Project name
CPH
CPH
LIN
LIN
Xc nh ng dn thmc trongLocation
NGH
NGH
VIN
VIN ep : n o ng ng egu ar us ng
shared MFC DLLhocMFC Extension DLL
BIG
BIG
THTH Nh nFinish k t th c
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((2626))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((2626))
-
7/29/2019 Windows Form Bai 8
27/43
CC DNG THVIN DLL CA MFC
NDOW
NDOW
--DLLDLL
NHWI
NHWI
NG
NG
LPT
LPT
KT
KT
CPH
CPH
LIN
LIN
NGH
NGH
VIN
VIN
BIG
BIG
THTH
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((2727))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((2727))
-
7/29/2019 Windows Form Bai 8
28/43
CC DNG THVIN DLL CA MFC
NDOW
NDOW
--DLLDLL Regular DLL:
Chexport cc hm theo dng C-style, khng th export class, hm thnh
NHWI
NHWI
NG
NG
p n c a c ass, c c m n ng a c ng over oa e unc on
Cc ng dng Win32 v MFC u c th s dng loi DLL
LPT
LPT
KT
KT
theo cch lin kt tnh
using shared MFC DLL: DLL sc lin kt vi cc DLL chun ca MFC
CPH
CPH
LIN
LIN
eo c c n ng
NGH
NGH
VIN
VIN
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.
BIG
BIG
THTH DLL sc lin kt vi cc DLL chun ca MFC theo cch lin kt ng
Chc cc ng dng MFC mi c th dng vi loi DLL ny.
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((2828))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((2828))
-
7/29/2019 Windows Form Bai 8
29/43
CCH THC GI DLL TRONG NG DNG
NDOW
NDOW
--DLLDLL
NHWI
NHWI
NG
NG
LPT
LPT
KT
KT
-
CPH
CPH
LIN
LIN
Run-time Dynamic Linking
NGH
NGH
VIN
VIN
BIG
BIG
THTH
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((2929))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((2929))
-
7/29/2019 Windows Form Bai 8
30/43
NG DNG TM KIM FILE DLL
NDOW
NDOW
--DLLDLL
Hiu hnh Windows s tm file DLL c s dng
NHWI
NHWI
NG
NG
- Th m c cha t tin EXE i DLL n
LPT
LPT
KT
KT - Th mc hin hnh
CPH
CPH
LIN
LIN - Th mc system, system32
- Th mc Windows
NGH
NGH
VIN
VIN
- Cc th mc c lit k trong bin mi trng PATH
BIG
BIG
THTH
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((3030))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((3030))
-
7/29/2019 Windows Form Bai 8
31/43
CCH THC GI DLL TRONG NG DNG Load-time
NDOW
NDOW
--DLLDLL ng dng s gi hm export ca DLL mt cch tng minh
(ging nh cch gi hm ca th vin lin kt tnh)
NHWI
NHWI
NG
NG
ng dng cn phi lin kt vi file th vin nhp (Import Lib)
ca DLL
LPT
LPT
KT
KT
ng dng s np DLL ngay thi im u tin chng trnh ch
CPH
CPH
LIN
LIN
u im:
NGH
NGH
VIN
VIN - n gin, d s dng v ging nh cch dng th vin tnh
Khuyt im:
BIG
BIG
THTH
- Nu khng tm ra DLL lc np, ng dng s kt thc ngay
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((3131))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((3131))
-
7/29/2019 Windows Form Bai 8
32/43
CCH THC GI DLL TRONG NG DNG Load-time
NDOW
NDOW
--DLLDLL Cch thc hin
NHWI
NHWI
NG
NG
-Add file th vin nhp (DLLName.Lib) vo project
LPT
LPT
KT
KT
- Khai bo cc hm, bin IMPORT t DLL
CPH
CPH
LIN
LIN
- Gi hm ca th vin DLL nh gi hm bnh thng
NGH
NGH
VIN
VIN
BIG
BIG
THTH
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((3232))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((3232))
-
7/29/2019 Windows Form Bai 8
33/43
CCH THC GI DLL TRONG NG DNG Run-time
NDOW
NDOW
--DLLDLL ng dng s gi hm LoadLibraryhay LoadLibraryEx npDLL ti thi im cn thit
NHWI
NHWI
NG
NG Sau khi DLL c np, ng dng s dng hm
GetProcessAddress ly a ch ca hm export trong DLL
LPT
LPT
KT
KT ng dng s gi hm export trong DLL bng cch dng con
tr hm tr v t hm GetProcessAddress
CPH
CPH
LIN
LIN
-
u im:
NGH
NGH
VIN
VIN
.
- 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
BIG
BIG
THTH Khuyt im:
- Phc tp, kh s dng trong ci t
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((3333))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((3333))
-
7/29/2019 Windows Form Bai 8
34/43
CCH THC GI DLL TRONG NG DNG Run-time
NDOW
NDOW
--DLLDLL V d: gi hm MyFunction(LPTSTR) t th vin MYDLL.DLL
typedef VOID (*MYPRO) (LPTSTR);
NHWI
NHWI
NG
NG HINSTANCE hInsLib ;
MYPROC ProcAddr;
LPT
LPT
KT
KT
hInsLib = LoadLibrary(MYDLL);
if (hInsLib !=NULL)
CPH
CPH
LIN
LIN
ProcAddr = (MYPRO) GetProcessAddress(hInsLib,MyFunction);
if (ProcAddr !=NULL)
NGH
NGH
VIN
VIN {
(ProcAddr)(A parameter string) ;
BIG
BIG
THTH
ree rary ns ;
}
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((3434))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((3434))
XY DNG TH VIN DLL BNG MFC
-
7/29/2019 Windows Form Bai 8
35/43
XY DNG THVIN DLL BNG MFC
NDOW
NDOW
--DLLDLL
Xy dng th vin MFC Extention DLL MyFirstDLL
NHWI
NHWI
NG
NG
c ass _ _ y ass : pu c ec
{
public:
LPT
LPT
KT
KT
void SetFirstName(CString s);
void ShowMessageBox();
CMyClass();
CPH
CPH
LIN
LIN virtual ~CMyClass();
protected:
NGH
NGH
VIN
VIN CString m_FirstName;
};
BIG
BIG
THTH
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((3535))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((3535))
XY DNG TH VIN DLL BNG MFC
-
7/29/2019 Windows Form Bai 8
36/43
XY DNG THVIN DLL BNG MFC
NDOW
NDOW
--DLLDLL
Xy dng th vin MFC Extention DLL MyFirstDLL
CM Class::CM Class
NHWI
NHWI
NG
NG {
m FirstName=M FirstDLL Sam le"
LPT
LPT
KT
KT
void CMyClass::ShowMessageBox()
_
}
CPH
CPH
LIN
LIN
AfxMessageBox(m_FirstName);
NGH
NGH
VIN
VIN
void CMyClass::SetFirstName(CString s)
BIG
BIG
THTH m_FirstName = s;
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((3636))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((3636))
}
XY DNG TH VIN DLL BNG MFC
-
7/29/2019 Windows Form Bai 8
37/43
XY DNG THVIN DLL BNG MFC
NDOW
NDOW
--DLLDLL
To ng dng MyFirstDLLSample s dng th vinMyFirstDLL
NHWI
NHWI
NG
NG void CMFCSampleDllView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
LPT
LPT
KT
KT
CMyClass my;
my.ShowMessageBox();
CPH
CPH
LIN
LIN my.SetFirstName("abc");
my.ShowMessageBox();
NGH
NGH
VIN
VIN
CView::OnLButtonDown(nFlags, point);
BIG
BIG
THTH
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((3737))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((3737))
XY DNG TH VIN DLL BNG MFC
-
7/29/2019 Windows Form Bai 8
38/43
XY DNG THVIN DLL BNG MFC
NDOW
NDOW
--DLLDLL
Thay i hm ShowMessageBox trong th vin MyFirstDLL
void CM Class::ShowMessa eBox
NHWI
NHWI
NG
NG {
AfxMessageBox(m_FirstName);
LPT
LPT
KT
KT }
void CMyClass::ShowMessageBox()
CPH
CPH
LIN
LIN {
AfxMessageBox(m_FirstName);
AfxMessageBox(DllSample: + m_FirstName);
NGH
NGH
VIN
VIN
}
BIG
BIG
THTH
Copy tp tin MyFirstDLL.DLL vo th mc MyFirstDLLSample\Debug
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((3838))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((3838))
XY DNG TH VIN DLL BNG MFC
-
7/29/2019 Windows Form Bai 8
39/43
XY DNG THVIN DLL BNG MFC
NDOW
NDOW
--DLLDLL Run chng trnh MyFirstDLLSampleiu g xy ra khi clickiu g xy ra khi click
NHWI
NHWI
NG
NG
hnh chng trnhhnh chng trnhMyFirstDLLSample
?
LPT
LPT
KT
KT
void CMFCSampleDllView::OnLButtonDown(UINT nFlags, CPoint point)
CPH
CPH
LIN
LIN
CMyClass my;my.ShowMessageBox();
NGH
NGH
VIN
VIN
my.SetFirstName("abc");
my.ShowMessageBox();
BIG
BIG
THTH
CView::OnLButtonDown(nFlags, point);
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((3939))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((3939))
}
XY DNG TH VIN DLL BNG MFC
-
7/29/2019 Windows Form Bai 8
40/43
XY DNG THVIN DLL BNG MFC
NDOW
NDOW
--DLLDLL
Xy dng th vin MySecondDLL MFC Extention DLL c sdng resource
NHWI
NHWI
NG
NG
LPT
LPT
KT
KT
CPH
CPH
LIN
LIN
NGH
NGH
VIN
VIN
BIG
BIG
THTH
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((4040))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((4040))
XY DNG TH VIN DLL BNG MFC
-
7/29/2019 Windows Form Bai 8
41/43
XY DNG THVIN DLL BNG MFC
NDOW
NDOW
--DLLDLL Lin kt MySecondDLL vi ng dng MyFirstDLLSample
NHWI
NHWI
NG
NG
void CMFCSam leDllView::OnRButtonDown UINT nFla s CPoint oint
#include "MyLoginDlg.h"
LPT
LPT
KT
KT
{
// TODO: Add your message handler code here and/or call default
CPH
CPH
LIN
LIN
dlg.DoModal();
NGH
NGH
VIN
VIN
,
}
BIG
BIG
THTH
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((4141))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((4141))
TI LIU THAM KHO
-
7/29/2019 Windows Form Bai 8
42/43
TI LIU THAM KHO
NDOW
NDOW
--DLLDLL
Charles Petzold (1998), Programming Windows Fifth Edition, Microsoft Press Chapter 21
NHWI
NHWI
NG
NG
David J. Kruglinski (1998), Programming Microsoft Visual C++ Fifth Edition,
Microsoft Press Chapter 22
LPT
LPT
KT
KT
CPH
CPH
LIN
LIN
NGH
NGH
VIN
VIN
BIG
BIG
THTH
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((4242))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((4242))
-
7/29/2019 Windows Form Bai 8
43/43
NDOW
NDOW
--DLL
DLL
NHWI
NHWI
NG
NG
LPT
LPT
KT
KT
CPH
CPH
LIN
LIN
NGH
NGH
VIN
VIN
BIG
BIG
THTH
TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((4343))TRN NGC BOTRN NGC BO KHOA TONKHOA TON --TIN HCTIN HC I HC S PHM TP.HCMI HC S PHM TP.HCM ((4343))