Windows Form Bai 8

download Windows Form Bai 8

of 43

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))