Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 43 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
43
Dung lượng
1,08 MB
Nội dung
Đạ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ệnliên k
ế
t độngThư việnliên k
ế
t động
(
DLL
(
DLL
––
DYNAMIC LINK LIBRARY
)
DYNAMIC LINK LIBRARY
)
((
))
• Giới thiệu thưviênliên kết
• Các loại thưviệnliên kết
•
Xây dựng thưviệnliênkết động
Trần Ngọc Bảo - Email: tnbao.dhsp@gmail.com
•
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ệnliên k
ế
t độngThư việnliên k
ế
t động
(
DLL
(
DLL
––
DYNAMIC LINK LIBRARY
)
DYNAMIC LINK LIBRARY
)
((
))
• Giới thiệu thưviênliên kết
• Các loại thưviệnliên kết
•
Xây dựng thưviệnliênkết động
•
Xây
dựng
thư
viện
liên
kết
động
SS
GIỚI THIỆU – LIÊNKẾ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Ệ
NƯ
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ÊNKẾ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Ệ
NƯ
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ÊNKẾ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Ệ
NƯ
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ÊNKẾ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á
c
tài
nguy
ê
n n
à
y
th
ư
ờ
ng c
h
o p
hé
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ênkế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Ệ
NƯ
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ệnliên k
ế
t độngThư việnliên k
ế
t động
(
DLL
(
DLL
––
DYNAMIC LINK LIBRARY
)
DYNAMIC LINK LIBRARY
)
((
))
• Giới thiệu thưviênliên kết
• Các loại thưviệnliên kết
•
Xây dựng thưviệnliênkế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ệnliênkế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
hâ
n c
ủ
a c
á
c
hà
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Ệ
NƯ
VIỆ
N
-
Trình
biên
dịch
sẽ
copy
đoạn
mã
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ỆNLIÊNKẾT TĨNH
NDOW
S
NDOW
S
DLLDLL
Thư việnliê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Ệ
NƯ
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ỆNLIÊNKẾ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Ệ
NƯ
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))
[...]... thiệu thưviênliênkết • Các loại thư việnliênkết • Xây dựng thưviệnliênkết động THƯVIỆNLIÊNKẾTĐỘNG- DLL Ư N Đ BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S XÂY DỰNG DLL Xây dựng thưviện DLL bằng thưviện Win32API Chọn loại Project: “Win32 Dynamic Link Library” TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (15) 15) THƯVIỆNLIÊNKẾTĐỘNG- DLL Ư N Đ BÀI GI IẢNG HỌ PHẦN LẬP TR... time dynamic linking - File DLL Chứa mã lệnh nhị phân của các hàm thưviện Đượ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 KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (11) 11) THƯVIỆNLIÊNKẾTĐỘNG- DLL Ư N Đ BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S THƯVIỆNLIÊNKẾTĐỘNG Chương trình chính Thư việnliênkết Source code S (Source...THƯ VIỆNLIÊNKẾTĐỘNG- DLL Ư N Đ BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S THƯVIỆNLIÊNKẾTĐỘNG Thư việnliênkết động (Dynamic Linking Library) - Dạng file: LIB và DLL - File LIB LIB Thưviện nhập (Import Library) Không chứa mã lệnh của các hàm 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... KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (12) 12) THƯVIỆNLIÊNKẾTĐỘNG- DLL Ư N Đ BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S THƯVIỆNLIÊNKẾTĐỘNG Ưu điểm - Mã lệnh của các hàm sẽ không được nhúng vào trong file chương trình của ứng ệ g ợ g g 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ện vào bộ nhớ - Nhiều... Extension DLL” Nhấ “Finish” để kết thúc ấn ể ế ú TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (26) 26) THƯVIỆNLIÊNKẾTĐỘNG- DLL Ư N Đ BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S CÁC DẠNG THƯVIỆN DLL CỦA MFC TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (27) 27) THƯVIỆNLIÊNKẾTĐỘNG- DLL Ư N Đ BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S CÁC DẠNG THƯVIỆN DLL CỦA MFC Regular... thứ tự các thư mục sau -Thư mục chứa tập tin EXE gọ DLL này ụ ập gọi y -Thư mục hiện hành -Thư mục system, system32 h 32 -Thư mục Windows- Các thư mục được liệt kê trong biến môi trường PATH TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (30) 30) THƯVIỆNLIÊNKẾTĐỘNG- DLL Ư N Đ BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S CÁCH THỨC GỌI DLL TRONG ỨNG DỤNG – Load-time Ứng dụng sẽ gọi... hàm của thư việnliênkết tĩnh) Ứng dụng cần phải liênkết với file thưviện nhập (Import Lib) của DLL Ứng dụng sẽ nạp DLL ngay thời điểm đầu tiên chương trình chạ Ưu điểm: - Đơn giản, dễ sử dụng vì giống như cách dùng thưviện tĩnh Khuyết điểm: - Nếu không tìm ra DLL lúc nạp, ứng dụng sẽ kết thúc ngay TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (31) 31) THƯVIỆNLIÊNKẾTĐỘNG- DLL Ư N... BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S CÁCH THỨC GỌI DLL TRONG ỨNG DỤNG – Load-time Cách thực hiện - Add file thưviện nhập (DLLName.Lib) vào project - Khai báo các hàm, biến IMPORT từ DLL - Gọi hàm của thưviện DLL như gọi hàm bình thư ng TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (32) 32) THƯVIỆNLIÊNKẾTĐỘNG- DLL Ư N Đ BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S CÁCH THỨC... RÌNH WINDOWS S XÂY DỰNG DLL Xây dựng thưviện DLL bằng thưviện MFC Chọn loại Project: “MFC AppWizard(Dll) MFC AppWizard(Dll)” TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (16) 16) THƯVIỆNLIÊNKẾTĐỘNG- DLL Ư N Đ BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S XÂY DỰNG DLL DÙNG THƯVIỆN WIN32 API Tạo lập DLL ạ ập Phâ tích các khai báo ân í h á kh bá Phân tích hàm DllMain Demo liênkết DLL... TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (22) 22) THƯVIỆNLIÊNKẾTĐỘNG- DLL Ư N Đ BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S XÂY DỰNG DLL DÙNG THƯVIỆN WIN32 API Phân tích hàm DllMain (tt) DLL_THREAD_ATTACH: 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 đó • Đây là thời điểm . 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. 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