Tải bản đầy đủ (.pdf) (43 trang)

LẬP TRÌNH WINDOWS - Thư viện liên kết động potx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.08 MB, 43 trang )

Đại Học Sư Phạm Tp. Hồ Chí Minh
Khoa Toán – Tin Học
LẬP TRÌNH WINDOWSLẬP TRÌNH WINDOWS
ếế
Thư viện liên k
ế
t độngThư viện liên k
ế
t động
(
DLL
(
DLL
––
DYNAMIC LINK LIBRARY
)
DYNAMIC LINK LIBRARY
)
((
))
• Giới thiệu thư viên liên kết
• Các loại thư viện liên kết

Xây dựng thư viện liên kết động
Trần Ngọc Bảo - Email:

Xây

dựng

thư



viện

liên

kết

động
Đại Học Sư Phạm Tp. Hồ Chí Minh
Khoa Toán – Tin Học
LẬP TRÌNH WINDOWSLẬP TRÌNH WINDOWS
ếế
Thư viện liên k
ế
t độngThư viện liên k
ế
t động
(
DLL
(
DLL
––
DYNAMIC LINK LIBRARY
)
DYNAMIC LINK LIBRARY
)
((
))
• Giới thiệu thư viên liên kết
• Các loại thư viện liên kết


Xây dựng thư viện liên kết động

Xây

dựng

thư

viện

liên

kết

động
SS
GIỚI THIỆU – LIÊN KẾT LÀ GÌ ?
NDOW
S
NDOW
S
DLLDLL
CT Kế toánCT Kế toán CT Nhân sựCT Nhân sự
CT Tiền lươngCT Tiền lương
R
ÌNH WI
R
ÌNH WI
Đ

ỘNG
Đ
ỘNG
N
LẬP T
RN
LẬP T
R
KẾT
Đ
KẾT
Đ
SourceSource SourceSource
SourceSource
codecode

C PHẦ
NỌ
C PHẦ
N
N
LIÊN
N
LIÊN
codecode codecode
codecode
I
ẢNG H
ỌI
ẢNG H


Ư
VIỆ

VIỆ
N
KT.EXEKT.EXE NS.EXENS.EXE
TL.EXETL.EXE
BÀI G
I
BÀI G
I
TH
Ư
TH
Ư
CSDLCSDL
CSDLCSDL
CSDLCSDL
TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((33))TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((33))
CSDLCSDL
CSDLCSDL
CSDLCSDL
SS
GIỚI THIỆU – LIÊN KẾT LÀ GÌ ?
NDOW
S
NDOW
S
DLLDLL

CT Kế CT Kế
tátá
CT Nhân CT Nhân
CT Tiền CT Tiền
lươnglương
R
ÌNH WI
R
ÌNH WI
Đ
ỘNG
Đ
ỘNG
t
o
á
n
t
o
á
n s

s

lươnglương
N
LẬP T
RN
LẬP T
R

KẾT
Đ
KẾT
Đ
SourceSource SourceSource
SourceSource
codecode

C PHẦ
NỌ
C PHẦ
N
N
LIÊN
N
LIÊN
codecode codecode
codecode
I
ẢNG H
ỌI
ẢNG H

Ư
VIỆ

VIỆ
N
KT.EXEKT.EXE NS.EXENS.EXE
TL.EXETL.EXE

BÀI G
I
BÀI G
I
TH
Ư
TH
Ư
TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((44))TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((44))
CSDLCSDL
SS
GIỚI THIỆU – LIÊN KẾT LÀ GÌ ?
NDOW
S
NDOW
S
DLLDLL
ModuleModule
Kế toánKế toán
ModuleModule
TiềnlươngTiềnlương
R
ÌNH WI
R
ÌNH WI
Đ
ỘNG
Đ
ỘNG
Kế


toánKế

toán
Tiền

lươngTiền

lương
N
LẬP T
RN
LẬP T
R
KẾT
Đ
KẾT
Đ

C PHẦ
NỌ
C PHẦ
N
N
LIÊN
N
LIÊN
KT.DLLKT.DLL
DataAccess.DLLDataAccess.DLL
TL.DLLTL.DLL

I
ẢNG H
ỌI
ẢNG H

Ư
VIỆ

VIỆ
N
BÀI G
I
BÀI G
I
TH
Ư
TH
Ư
CSDLCSDL
TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((55))TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((55))
CSDLCSDL
SS
GIỚI THIỆU – LIÊN KẾT LÀ GÌ ?
NDOW
S
NDOW
S
DLLDLL
 Thư viện là một tập tin chứa những hàm hoặc tài
nguyên khác có sẵn mà các ứng dụng có thể lấy để sử

d Cá tài ê à th ờ hhéhiề ứ
R
ÌNH WI
R
ÌNH WI
Đ
ỘNG
Đ
ỘNG
d
ụng.

c
tài
nguy
ê
n n
à
y
th
ư

ng c
h
o p

p n
hiề
u


ng
dụng cùng chia sẻ sử dụng dễ dàng một đoạn mã hoặc tài
nguyên
N
LẬP T
RN
LẬP T
R
KẾT
Đ
KẾT
Đ
nguyên
 Liên kết là cách thức mà trình biên dịch nhúng/kết hợp
á ủ ệ ()à

C PHẦ
NỌ
C PHẦ
N
N
LIÊN
N
LIÊN
c
á
c đoạn mã thực thi c

a những module thư vi


n
(
Lib
)
v
à
o
chương trình
I
ẢNG H
ỌI
ẢNG H

Ư
VIỆ

VIỆ
N
 Có 2 cách liên kết:

Liên kếttĩnh
BÀI G
I
BÀI G
I
TH
Ư
TH
Ư


Liên

kết

tĩnh
Liên kết động
TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((66))TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((66))
Đại Học Sư Phạm Tp. Hồ Chí Minh
Khoa Toán – Tin Học
LẬP TRÌNH WINDOWSLẬP TRÌNH WINDOWS
ếế
Thư viện liên k
ế
t độngThư viện liên k
ế
t động
(
DLL
(
DLL
––
DYNAMIC LINK LIBRARY
)
DYNAMIC LINK LIBRARY
)
((
))
• Giới thiệu thư viên liên kết
• Các loại thư viện liên kết


Xây dựng thư viện liên kết động

Xây

dựng

thư

viện

liên

kết

động
SS
GIỚI THIỆU – CÁC LOẠI THƯ VIỆN
NDOW
S
NDOW
S
DLLDLL
 Thư viện liên kết tĩnh (Static Linking Library)
R
ÌNH WI
R
ÌNH WI
Đ
ỘNG
Đ

ỘNG
-Dạng file: .LIB
Chứ ãlệ hhị hâ ủ áhà th iệ
N
LẬP T
RN
LẬP T
R
KẾT
Đ
KẾT
Đ
-
Chứ
a m
ã

lệ
n
h
n
hị
p

n c

a c
á
c


m
th
ư v
iệ
n
-Dùn
g
đ

nhún
g
vào file chươn
g
trình khi thực hiện
g
iai đoạn

C PHẦ
NỌ
C PHẦ
N
N
LIÊN
N
LIÊN
g g g g
liên kết (linking) của quá trình biên dịch
-
Trình biên dịch sẽ copy đoạnmãlệnh của các hàm thư viện
I

ẢNG H
ỌI
ẢNG H

Ư
VIỆ

VIỆ
N
-
Trình

biên

dịch

sẽ

copy

đoạn



lệnh

của

các


hàm

thư

viện

vào trong những module gọi chúng
BÀI G
I
BÀI G
I
TH
Ư
TH
Ư
TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((88))TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((88))
SS
THƯ VIỆN LIÊN KẾT TĨNH
NDOW
S
NDOW
S
DLLDLL
Thư viện liên kết
Chương trình chính
R
ÌNH WI
R
ÌNH WI
Đ

ỘNG
Đ
ỘNG
Source codeSource code Source codeSource code
N
LẬP T
RN
LẬP T
R
KẾT
Đ
KẾT
Đ

C PHẦ
NỌ
C PHẦ
N
N
LIÊN
N
LIÊN
CompilerCompiler
CompilerCompiler
I
ẢNG H
ỌI
ẢNG H

Ư

VIỆ

VIỆ
N
LIBLIB
OBJ filesOBJ files
LinkerLinker
BÀI G
I
BÀI G
I
TH
Ư
TH
Ư
AB.EXEAB.EXE
TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((99))TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((99))
SS
THƯ VIỆN LIÊN KẾT TĨNH
NDOW
S
NDOW
S
DLLDLL
 Ưu điểm
D
ễ thựchiện
R
ÌNH WI
R

ÌNH WI
Đ
ỘNG
Đ
ỘNG
-
D


thực

hiện
-Chương trình có thể chạy độc lập, không cần các file kèm theo
N
LẬP T
RN
LẬP T
R
KẾT
Đ
KẾT
Đ
-Chương trình chạy nhanh hơn vì không cần thực hiện load thư viện
 Khu
y
ết đi

m

C PHẦ

NỌ
C PHẦ
N
N
LIÊN
N
LIÊN
y
- Đoạn mã lệnh được nhúng vào chương trình Æ kích thước chương trình
lớn, tốnbộ nhớ.
I
ẢNG H
ỌI
ẢNG H

Ư
VIỆ

VIỆ
N
lớn,

tốn

bộ

nhớ.
- Đoạn mã lệnh được nhúng vào nhiều file chương trình khác nhau Æ
khôn
g

tối ưu
BÀI G
I
BÀI G
I
TH
Ư
TH
Ư
g
-Khi thay đổi hàm thư viện Æ phải biên dịch lại toàn bộ các file chương
trình
TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((1010))TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((1010))
SS
THƯ VIỆN LIÊN KẾT ĐỘNG
NDOW
S
NDOW
S
DLLDLL
 Thư viện liên kết động (Dynamic Linking Library)
R
ÌNH WI
R
ÌNH WI
Đ
ỘNG
Đ
ỘNG
-Dạng file: .LIB và DLL

-
File LIB
N
LẬP T
RN
LẬP T
R
KẾT
Đ
KẾT
Đ
-
File
.
LIB
 Thư viện nhập (Import Library)
 Không chứa mã lệnh của các hàm
ầ ế ể ề

C PHẦ
NỌ
C PHẦ
N
N
LIÊN
N
LIÊN
 Chỉ chứa các thông tin c

n thi

ế
t đ

hệ đi

u hành nạp thư viện DLL và xác định
các hàm export trong DLL
 Sử dụng khi dùng cách thức load – time dynamic linking
I
ẢNG H
ỌI
ẢNG H

Ư
VIỆ

VIỆ
N
- File .DLL

Chứa mã lệnh nhị phân của các hàm thư viện
BÀI G
I
BÀI G
I
TH
Ư
TH
Ư
 Được tải vào bộ nhớ khi ứng dụng gọi hàm thư viện

 Cần phải chép tập tin đi kèm khi thực thi ứng dụng
TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((1111))TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((1111))
SS
THƯ VIỆN LIÊN KẾT ĐỘNG
NDOW
S
NDOW
S
DLLDLL
SS
Thư viện liên kết
Chương trình chính
R
ÌNH WI
R
ÌNH WI
Đ
ỘNG
Đ
ỘNG
S
ource cod
eS
ource cod
e
(Source file)(Source file)
Source codeSource code
N
LẬP T
RN

LẬP T
R
KẾT
Đ
KẾT
Đ
Source cod
e
Source cod
e

C PHẦ
NỌ
C PHẦ
N
N
LIÊN
N
LIÊN
CompilerCompiler
CompilerCompiler
(Header files)(Header files)
I
ẢNG H
ỌI
ẢNG H

Ư
VIỆ


VIỆ
N
DLLDLL
OBJ filesOBJ files
LinkerLinker
BÀI G
I
BÀI G
I
TH
Ư
TH
Ư
AB.EXEAB.EXE
TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((1212))TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((1212))
SS
THƯ VIỆN LIÊN KẾT ĐỘNG
NDOW
S
NDOW
S
DLLDLL
 Ưu điểm
-Mã l

nh của các hàm sẽ khôn
g
đư

c nhún

g
vào tron
g
file chươn
g
trình của ứn
g

R
ÌNH WI
R
ÌNH WI
Đ
ỘNG
Đ
ỘNG
ệ g ợ gg g g
dụng Æ Kích thước của ứng dụng nhỏ
- Ứng dụng chỉ cần lưu thông tin của hàm thư viện, khi cần hệ điều hành sẽ load các
hàm thư việnvàobộ nhớ
N
LẬP T
RN
LẬP T
R
KẾT
Đ
KẾT
Đ
hàm


thư

viện

vào

bộ

nhớ
- Nhiều ứng dụng có thể dùng chung 1 DLL. Do đó, tiết kiệm bộ nhớ (thông thường
mỗi ứng dụng có data riêng, nhưng có thể chia sẻ mã lệnh)

C PHẦ
NỌ
C PHẦ
N
N
LIÊN
N
LIÊN
- Khi không còn sử dụng, có thể giải phóng DLL khỏi bộ nhớ
- Khi cần nâng cấp, chỉ cần thay thế file DLL, các file chương trình khác không bị
ảnh hưởng
I
ẢNG H
ỌI
ẢNG H

Ư

VIỆ

VIỆ
N
ảnh

hưởng
 Khuyết điểm
BÀI G
I
BÀI G
I
TH
Ư
TH
Ư
- Khó sử dụng hơn
TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((1313))TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((1313))
Đại Học Sư Phạm Tp. Hồ Chí Minh
Khoa Toán – Tin Học
LẬP TRÌNH WINDOWSLẬP TRÌNH WINDOWS
ếế
Thư viện liên k
ế
t độngThư viện liên k
ế
t động
(
DLL
(

DLL
––
DYNAMIC LINK LIBRARY
)
DYNAMIC LINK LIBRARY
)
((
))
• Giới thiệu thư viên liên kết
• Các loại thư viện liên kết

Xây dựng thư viện liên kết động

Xây

dựng

thư

viện

liên

kết

động
SS
XÂY DỰNG DLL
NDOW
S

NDOW
S
DLLDLL
 Xây dựng thư viện DLL bằng thư viện Win32API
R
ÌNH WI
R
ÌNH WI
Đ
ỘNG
Đ
ỘNG
N
LẬP T
RN
LẬP T
R
KẾT
Đ
KẾT
Đ

C PHẦ
NỌ
C PHẦ
N
N
LIÊN
N
LIÊN

I
ẢNG H
ỌI
ẢNG H

Ư
VIỆ

VIỆ
N
BÀI G
I
BÀI G
I
TH
Ư
TH
Ư
Chọn loại Project:
“Win32 Dynamic Link Library”
TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((1515))TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((1515))
SS
XÂY DỰNG DLL
NDOW
S
NDOW
S
DLLDLL
 Xây dựng thư viện DLL bằng thư viện MFC
R

ÌNH WI
R
ÌNH WI
Đ
ỘNG
Đ
ỘNG
N
LẬP T
RN
LẬP T
R
KẾT
Đ
KẾT
Đ

C PHẦ
NỌ
C PHẦ
N
N
LIÊN
N
LIÊN
I
ẢNG H
ỌI
ẢNG H


Ư
VIỆ

VIỆ
N
BÀI G
I
BÀI G
I
TH
Ư
TH
Ư
Chọn loại Project:

MFC AppWizard(Dll)

TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((1616))TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((1616))
MFC

AppWizard(Dll)

SS
XÂY DỰNG DLL DÙNG THƯ VIỆN WIN32 API
NDOW
S
NDOW
S
DLLDLL


T

o l
ập
DLL
R
ÌNH WI
R
ÌNH WI
Đ
ỘNG
Đ
ỘNG
ạ ập
âíhákhbá
N
LẬP T
RN
LẬP T
R
KẾT
Đ
KẾT
Đ
 Ph
â
n t
í
c
h

c
á
c
kh
ai

o

C PHẦ
NỌ
C PHẦ
N
N
LIÊN
N
LIÊN
 Phân tích hàm DllMain
I
ẢNG H
ỌI
ẢNG H

Ư
VIỆ

VIỆ
N

Demo
liên kếtDLLvới ứng dụng

BÀI G
I
BÀI G
I
TH
Ư
TH
Ư

Demo
liên

kết

DLL

với

ứng

dụng
TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((1717))TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((1717))
SS
XÂY DỰNG DLL DÙNG THƯ VIỆN WIN32 API
NDOW
S
NDOW
S
DLLDLL
 Chọn menu File Æ New

R
ÌNH WI
R
ÌNH WI
Đ
ỘNG
Đ
ỘNG
 Chọn Tab Projects

Chọnloạiproject

Win32 Dynamic Link Library

N
LẬP T
RN
LẬP T
R
KẾT
Đ
KẾT
Đ

Chọn

loại

project


Win32

Dynamic

Link

Library
 Đặt tên project trong ô “Project name”

C PHẦ
NỌ
C PHẦ
N
N
LIÊN
N
LIÊN
 Xác định đường dẫn thư mục trong “Location”

St 1 Ch l i ứ d
“A DLL th t t
I
ẢNG H
ỌI
ẢNG H

Ư
VIỆ

VIỆ

N

St
ep
1
:
Ch
ọn
l
oạ
i


n
g

d
ụn
g

“A

DLL

th
a
t
expor
t
s some

symbols”

ể ế ú
BÀI G
I
BÀI G
I
TH
Ư
TH
Ư
 Nh

n “Finish” đ

k
ế
t th
ú
c
TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((1818))TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((1818))
SS
XÂY DỰNG DLL DÙNG THƯ VIỆN WIN32 API
NDOW
S
NDOW
S
DLLDLL
 dllexport: cung cấp hàm, dữ liệu, tài nguyên,…cho các chương trình/DLL
khác sử dụng

R
ÌNH WI
R
ÌNH WI
Đ
ỘNG
Đ
ỘNG
#define DLLEXPORT __declspec(dllexport)
//Khai báo 1 biến

xuấtkhẩu

N
LẬP T
RN
LẬP T
R
KẾT
Đ
KẾT
Đ
//Khai

báo

1

biến


xuất

khẩu
DLLEXPORT int nMyValue;
//Khai báo 1 hàm “xuất khẩu”
DLLEXPORT int MyFunction(void)

C PHẦ
NỌ
C PHẦ
N
N
LIÊN
N
LIÊN
 dllimport: load 1 hàm, dữ liệu, tài nguyên,…từ 1 DLL khác để sử dụng
DLLEXPORT

int

MyFunction(void)
I
ẢNG H
ỌI
ẢNG H

Ư
VIỆ

VIỆ

N
#define DLLIMPORT __declspec(dllimport)
//Khai báo 1 biến

nhậpkhẩu

BÀI G
I
BÀI G
I
TH
Ư
TH
Ư
//Khai

báo

1

biến

nhập

khẩu
DLLIMPORT int nMyValue;
//Khai báo 1 hàm “nhập khẩu”
DLLIMPORT int MyFunction(void)
TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((1919))TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((1919))
DLLIMPORT


int

MyFunction(void)
SS
XÂY DỰNG DLL DÙNG THƯ VIỆN WIN32 API
NDOW
S
NDOW
S
DLLDLL
 Phân tích hàm DllMain
R
ÌNH WI
R
ÌNH WI
Đ
ỘNG
Đ
ỘNG
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
N
LẬP T
RN
LẬP T
R
KẾT
Đ

KẾT
Đ
LPVOID

lpReserved
)
{
switch (ul reason for call)

C PHẦ
NỌ
C PHẦ
N
N
LIÊN
N
LIÊN
switch

(ul
_
reason
_
for
_
call)
{
case DLL_PROCESS_ATTACH:
case DLL THREAD ATTACH:
I

ẢNG H
ỌI
ẢNG H

Ư
VIỆ

VIỆ
N
case

DLL
_
THREAD
_
ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
BÀI G
I
BÀI G
I
TH
Ư
TH
Ư
break;
}
return TRUE;

}
TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((2020))TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((2020))
}
SS
XÂY DỰNG DLL DÙNG THƯ VIỆN WIN32 API
NDOW
S
NDOW
S
DLLDLL
 Phân tích hàm DllMain (tt)
R
ÌNH WI
R
ÌNH WI
Đ
ỘNG
Đ
ỘNG
 Hàm DllMain là hàm chính của DLL
 Hàm DllMain được gọi khi DLL được load vào bộ nhớ hoặc khi Windows
ê ầ DLL kếtthú ( l dkhỏibộ hớ)
N
LẬP T
RN
LẬP T
R
KẾT
Đ
KẾT

Đ
y
ê
u c

u
DLL

kết

thú
c
(
un
l
oa
d

khỏi

bộ
n
hớ)

 Hàm DllMain có nhiệm vụ khởi tạo hoặc giải phóng các tài nguyên sử
dụng cho DLL đó(nếucó)

C PHẦ
NỌ
C PHẦ

N
N
LIÊN
N
LIÊN
dụng

cho

DLL

đó

(nếu

có)
 Các tham số:

hModule
: handle của DLL do Windows tạora
I
ẢNG H
ỌI
ẢNG H

Ư
VIỆ

VIỆ
N


hModule
:

handle

của

DLL
,
do

Windows

tạo

ra
• ul_reason_for_call: lý do hàm DllMain được gọi
BÀI G
I
BÀI G
I
TH
Ư
TH
Ư
TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((2121))TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((2121))
SS
XÂY DỰNG DLL DÙNG THƯ VIỆN WIN32 API
NDOW

S
NDOW
S
DLLDLL
 Phân tích hàm DllMain (tt)
 DLL
_
PROCESS
_
ATTACH:
R
ÌNH WI
R
ÌNH WI
Đ
ỘNG
Đ
ỘNG
__
• Hàm DllMain với tham số DLL_PROCESS_ATTACH được gọi khi process tiến
hành load DLL
N
LẬP T
RN
LẬP T
R
KẾT
Đ
KẾT
Đ

• Thư viện DLL đang được Windows ánh xạ vào vùng nhớ của tiến trình (thực
hiện lời gọi DLL)

Đây là thời điểm để DLL khởitạo các biếncấp phát vùng nhớ hay những

C PHẦ
NỌ
C PHẦ
N
N
LIÊN
N
LIÊN
Đây



thời

điểm

để

DLL

khởi

tạo

các


biến
,
cấp

phát

vùng

nhớ

hay

những

thao tác cần thiết khác trước khi cho phép tiến trình gọi đến các hàm của thư
viện
I
ẢNG H
ỌI
ẢNG H

Ư
VIỆ

VIỆ
N
 DLL_PROCESS_DETACH:
• Thư viện DLL được giải phóng khỏi vùng nhớ của tiến trình do 1 trong 3
nguyên nhân: nạp DLL không thành công tiếntrìnhkết thúc hay tiếntrìnhgọi

BÀI G
I
BÀI G
I
TH
Ư
TH
Ư
nguyên

nhân:

nạp

DLL

không

thành

công
,
tiến

trình

kết

thúc
,

hay

tiến

trình

gọi

hàm FreeLibrary
• Đây là thời điểm để giải phóng các biến hay tài nguyên mà DLL đã cấp phát
TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((2222))TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((2222))
SS
XÂY DỰNG DLL DÙNG THƯ VIỆN WIN32 API
NDOW
S
NDOW
S
DLLDLL
 Phân tích hàm DllMain (tt)

DLL THREAD ATTACH:
R
ÌNH WI
R
ÌNH WI
Đ
ỘNG
Đ
ỘNG
DLL

_
THREAD
_
ATTACH:
• Khi tiến trình tạo mới một tiểu trình (Thread), Windows gọi hàm DllMain của tất
cả các thư viện DLL đang được sử dụng với tiến trình đó.
N
LẬP T
RN
LẬP T
R
KẾT
Đ
KẾT
Đ
• Đây là thời điểm để khởi tạo các biến dùng cho tiểu trình
• Lưu ý rằng tình huống này chỉ xảy ra khi tiểu trình được tạo sau khi thư viện
DLL đã load ào tiến trình nghĩalànế DLL đợcloadbằng hàn
LoadLibrar
thì

C PHẦ
NỌ
C PHẦ
N
N
LIÊN
N
LIÊN
DLL


đã

load
v
ào

tiến

trình
,
nghĩa



nế
u
DLL

đ
ư
ợc

load

bằng

hàn

LoadLibrar

y
thì

tất cả các tiểu trình hiện có (trong tiến trình) sẽ không gọi hàm DllMain với tham
số này.
I
ẢNG H
ỌI
ẢNG H

Ư
VIỆ

VIỆ
N
 DLL_THREAD_DETACH:
• Khi 1 tiểu trình kết thúc, Windows gọi hàm DllMain của tất cả các thư viện DLL
ử ể
BÀI G
I
BÀI G
I
TH
Ư
TH
Ư
đang được s

dụng với ti


u trình này.
• Đây là thời điểm để giải phóng các biến dùng cho tiểu trình
TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((2323))TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((2323))
SS
LIÊN KẾT DLL VỚI ỨNG DỤNG WIN32 API
NDOW
S
NDOW
S
DLLDLL
 Tạo Project loại “Win32 Dynamic Link Library”, với tên
“M
y
Win32DLL”
R
ÌNH WI
R
ÌNH WI
Đ
ỘNG
Đ
ỘNG
y
 Tạo Project loại “Win32 Application” với tên là
“M
y
Win32Sam
p
le”
N

LẬP T
RN
LẬP T
R
KẾT
Đ
KẾT
Đ
 Biên dịch và chạy chương trình
yp

C PHẦ
NỌ
C PHẦ
N
N
LIÊN
N
LIÊN
 Copy tập tin MyWin32DLL.DLL vào thư mục Debug của
“MyWin32Sample”
I
ẢNG H
ỌI
ẢNG H

Ư
VIỆ

VIỆ

N
 Copy tập tin MyWin32DLL.LIB và tập tin MyWin32DLL.H
vào thư mục MyWin32Sample
BÀI G
I
BÀI G
I
TH
Ư
TH
Ư
 Add tập tin MyWin32DLL.LIB vào project
M
y
Win32Sam
p
le
TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((2424))TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((2424))
yp
SS
XÂY DỰNG DLL DÙNG THƯ VIỆN MFC
NDOW
S
NDOW
S
DLLDLL

T

o l

ập
DLL
R
ÌNH WI
R
ÌNH WI
Đ
ỘNG
Đ
ỘNG
ạ ập

Ph
ân tích các khai báo
N
LẬP T
RN
LẬP T
R
KẾT
Đ
KẾT
Đ

Ph
ân

tích

các


khai

báo

Đị hhĩ hà t

C PHẦ
NỌ
C PHẦ
N
N
LIÊN
N
LIÊN

Đị
n
h
n
ghĩ
a

m expor
t
I
ẢNG H
ỌI
ẢNG H


Ư
VIỆ

VIỆ
N
 Các dạng thư viện DLL của MFC
BÀI G
I
BÀI G
I
TH
Ư
TH
Ư
 Liên kết DLL với ứng dụng
TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((2525))TRẦN NGỌC BẢO TRẦN NGỌC BẢO  KHOA TOÁN KHOA TOÁN TIN HỌC TIN HỌC  ĐẠI HỌC SƯ PHẠM TP.HCM ĐẠI HỌC SƯ PHẠM TP.HCM  ((2525))

×