1
Lp trình C trên Windows
Thư vin liên kết động
(DLL – Dynamic Link Library)
Nguyn Tri Tun
Khoa CNTT – ĐH.KHTN.Tp.HCM
Email: nttuan@ fit.hcmuns.edu.vn
Spring 2004C4W - DLL - Nguyen Tri Tuan - DH.KHTN Tp.HCM 2
Ni dung
Gii thiu
Xây dng DLL
Cách thc gi DLL trong ng dng
2
Spring 2004C4W - DLL - Nguyen Tri Tuan - DH.KHTN Tp.HCM 3
Gii thiu
Liên kết (Linking) là ?
Các loi thư vin
Định nghĩa DLL
DLL và cơ chếqun lý bnh
Spring 2004C4W - DLL - Nguyen Tri Tuan - DH.KHTN Tp.HCM 4
Gii thiu - Liên kết (Linking) là ?
Liên kết là cách thc mà trình biên dch
nhúng/kết hp các đon mã thc thi ca
nhng module thư vin (Lib) vào chương
trình
2 cách liên kết:
Liên kết tĩnh (Static linking)
Liên kết động (Dynamic linking)
3
Spring 2004C4W - DLL - Nguyen Tri Tuan - DH.KHTN Tp.HCM 5
Gii thiu – Các loi thư vin
Thư vin liên kết tĩnh (Static linking library)
Dng file: .LIB
Cha mã lnh nhphân ca các hàm thư vin
Dùng để nhúng vào file chương trình khi thc hin giai
đon liên kết (linking) ca quá trình biên dch
Trình biên dch s copy đon mã lnh ca hàm thư vin
vào trong nhng module gi
Ưu đim:
Dthc hin
Chương trình có thchy độc lp, không cn các file kèm theo
Chương trình schy nhanh hơn (nếu kích thước nh)
Spring 2004C4W - DLL - Nguyen Tri Tuan - DH.KHTN Tp.HCM 6
Gii thiu – Các loi thư vin…(tt)
Thư vin liên kết tĩnh (tt)
Khuyết đim:
Đon mã lnh được nhúng vào file chương trình t
kích thước chương trình ln, tn bnh
Đon mã lnh được nhúng vào nhiu file chương
trình khác nhau tkhông ti ưu
Khi thay đổi hàm thư vin tphi biên dch li toàn b
các file chương trình
4
Spring 2004C4W - DLL - Nguyen Tri Tuan - DH.KHTN Tp.HCM 7
Gii thiu – Các loi thư vin…(tt)
Thư vin liên kết động (Dynamic linking library)
Dng file: .LIB và .DLL
File .Lib:
Thư vin nhp (Import library).
Không cha mã lnh ca các hàm,
Chcha các thông tin cn thiết để H điu hành np thư vin DLL
xác định các hàm export trong DLL
Sdng khi dùng cách thc load-time dynamic linking
File .DLL:
Cha mã lnh nhphân ca các hàm thư vin
Được ti vào bnhkhi ng dng gi hàm thư vin
Cn có khi thc hin ng dng
Mã lnh ca các hàm s không được nhúng vào trong
file chương trình ca ng dng
ng dng chcn lưu thông tin ca hàm thư vin, và khi
cn, H điu hành sti các hàm thư vin vào bnh
Spring 2004C4W - DLL - Nguyen Tri Tuan - DH.KHTN Tp.HCM 8
Gii thiu – Các loi thư vin…(tt)
Thư vin liên kết động (tt)
Ưu đim:
Kích thước ca ng dng nh
Nhiu ng dng có thdùng chung 1 DLL, do đó, tiết
kim bnh (thông thường, các ng dng có data
riêng, nhưng có thchia xmã lnh)
Khi không còn sdng, có thgii phóng DLL khi
bnh
Khi cn nâng cp, chchcn thay thếfile DLL, các file
chương trình khác không bịảnh hưởng
Khuyết đim:
Khó sdng hơn
5
Spring 2004C4W - DLL - Nguyen Tri Tuan - DH.KHTN Tp.HCM 9
Gii thiu - Định nghĩa DLL
Là thư vin cha các hàm và dliu có th
được gi tcác module khác (module có th
1 ng dng EXE hay là mt DLL khác)
DLL được np vào bnhlúc run-time và
được map vào vùng nhca tiến trình gi
DLL có thcha 2 loi hàm thư vin:
Export: được phép gi tcác module khác
Internal: ch được dùng ni btrong DLL
Spring 2004C4W - DLL - Nguyen Tri Tuan - DH.KHTN Tp.HCM 10
Gii thiu - DLL và cơ chếqun lý bnh
Mi tiến trình (process) snp DLL vào
không gian địa chỉảo (virtual address space)
ca chính tiến trình đó
H điu hành qun lý 1 biến đếm (Count)
cho mi DLL. Biến Count được tăng lên 1
khi DLL được np (bi hàm LoadLibrary);
bgim đi 1 khi được gii phóng (bi hàm
FreeLibrary)
Khi biến Count=0 hay process kết thúc,
DLL được gii phóng khi bnh