Chương 9<br />
<br />
Lập trình<br />
thư viện động<br />
1<br />
<br />
9.1. Giới thiệu thư viện động - DLL<br />
Thư viện là một tập các đại lượng, các hàm cung cấp cho việc thực hiện<br />
các công việc cho các chương trình ứng dụng.<br />
Thư viện tĩnh (static library) được lập trình, dịch và liên kết với chương<br />
trình sử dụng nó. Dẫn đến các chương trình rất lớn khi lưu trữ, chiếm tài<br />
nguyên nhiều khi chạy,...<br />
Thư viện động (DLL) cho phép phép một chương trình sử dụng được lưu<br />
trữ độc lập với nó, chỉ khi chạy cần đến mới nạp vào máy. Nhằm mục đích<br />
giảm tải cho hệ thống khi chạy các ứng dụng.<br />
Minh họa thư viện động:<br />
<br />
<br />
Chương compile<br />
trình ứng<br />
dụng<br />
<br />
Chạy chương trình ứng dụng<br />
EXE<br />
EXE<br />
<br />
Thư viện compile<br />
động<br />
<br />
DLL<br />
<br />
DLL<br />
<br />
2<br />
<br />
9.1. Giới thiệu thư viện động – DLL...<br />
Thư viện động có 2 cơ chế làm việc: kiểu loadtime thư viện sẽ được nạp<br />
vào máy cùng với chương trình khi chạy, kiểu runtime thư viện được nạp<br />
vào máy mỗi khi chương trình cần, dùng xong sẽ giải phóng nó khỏi máy.<br />
Minh họa như sau:<br />
<br />
<br />
Chương trình<br />
<br />
DLL-1<br />
<br />
DLL-2<br />
<br />
DLL-1<br />
<br />
DLL-3<br />
<br />
RunTime<br />
DLL-1<br />
<br />
Chương trình<br />
DLL-1<br />
<br />
DLL-2<br />
<br />
DLL-2<br />
DLL-1<br />
<br />
DLL-3<br />
DLL-3<br />
<br />
LoadTime<br />
<br />
DLL-1, DLL-2, DLL-3, Chương trình<br />
<br />
3<br />
<br />
9.2. Giao diện thư viện DLL<br />
Giao diện thư viện (interface) là các kiểu, đại lượng, hàm cung cấp cho<br />
chương trình ứng dụng, nó là cầu nối giữa ứng dụng với bên trong thư<br />
viện.<br />
Minh họa như sau:<br />
<br />
<br />
DLL<br />
<br />
interface<br />
using<br />
using<br />
<br />
Chương trình<br />
ứng dụng<br />
<br />
using<br />
<br />
Chương trình không sử dụng được các thành phần này<br />
vì không có trên giao diện, mặc dù có trong thư viện.<br />
4<br />
<br />
9.3. Các kiểu thư viện DLL<br />
Có hai kiểu thư viện động có thể tạo trong lập trình MFC<br />
- DLL mở rộng MFC và<br />
- DLL thông thường.<br />
Đối với thư viện DLL mở rộng MFC thì các giao diện có thể chứa các thành<br />
phần trong C++ và MFC và tất nhiên có thể sử dụng C++ và MFC để lập<br />
trình tạo ra DLL. Chương trình liên kết tương ứng phải có cùng phiên bản<br />
với thư viện MFC của DLL.<br />
Thư viện DLL thông thường được lập trình các thành phần từ đầu, tuy<br />
nhiên có thể dùng các thành phần cơ bản của ngôn ngữ và hệ thông như<br />
API, lệnh cơ bản,...<br />
<br />
<br />
DLL mở<br />
rộng từ<br />
MFC<br />
<br />
DLL thông<br />
thường<br />
<br />
DLL3<br />
MFC<br />
<br />
DLL1<br />
<br />
DLL có sử<br />
dụng MFC<br />
<br />
DLL2<br />
5<br />
<br />