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ệ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: 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ệ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Ệ 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Ê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Ệ 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Ê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Ệ 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Ê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á 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ê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Ệ 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ệ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 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Ệ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Ệ 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Ệ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Ệ 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)) [...]... load vào tiến trình nghĩa là nế DLL được load bằng hàn LoadLibrar thì ào trình, nếu đ ợc LoadLibrary 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 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 đ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... 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 để 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... th t t symbols” 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 ( 18) 18) THƯ VIỆN LIÊN KẾ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 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 #define DLLEXPORT declspec(dllexport) //Khai báo 1 biến “xuất khẩu xuất khẩu” DLLEXPORT... đ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 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ến trình kết thúc, hay tiến trình gọi công, thúc hàm FreeLibrary • Đây là thời điểm để giải phóng các biến hay tài nguyên mà DLL đã... TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM ( 28) 28) THƯ VIỆN LIÊN KẾ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 Cách thức tìm kiếm file DLL LoadLoad time Dynamic Linking Run-time Dynamic Linking TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (29) 29) THƯ VIỆN LIÊN KẾT ĐỘNG - DLL Ư N Đ BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S ỨNG DỤNG TÌM... THƯ VIỆN LIÊN KẾ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ên kết DLL với ứng dụng TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (17) 17) THƯ VIỆN LIÊN KẾ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... KẾT ĐỘNG - DLL Ư N Đ BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S THƯ VIỆN LIÊN KẾT ĐỘNG Chương trình chính Thư viện liên kết Source code S (Source file) Compiler DLL Source code Source code (Header files) Linker Compiler OBJ files AB.EXE TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (12) 12) THƯ VIỆN LIÊN KẾT ĐỘNG - DLL Ư N Đ BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S THƯ VIỆN LIÊN... LIÊN KẾ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 MFC Tạo lập DLL ạ ập Phân tích các khai báo Định hĩ hàm Đị h nghĩa hà export t Các dạng thư viện DLL của MFC Liên kết DLL với ứng dụng TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (25) 25) THƯ VIỆN LIÊN KẾ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Ư... 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 Khuyết điểm - Khó sử dụng hơn TRẦN NGỌC BẢO KHOA TOÁN -TIN HỌC ĐẠI HỌC SƯ PHẠM TP.HCM (13) 13) Đại Học Sư Phạm Tp Hồ Chí Minh Khoa Toán – Tin Học LẬP TRÌNH WINDOWS Thư viện liên kết động ế ( (DLL – DYNAMIC LINK LIBRARY) ) • Giới thiệu thư viên liên kết • Các loại... ĐẠI HỌC SƯ PHẠM TP.HCM (23) 23) THƯ VIỆN LIÊN KẾT ĐỘNG - DLL Ư N Đ BÀI GI IẢNG HỌ PHẦN LẬP TR ỌC N RÌNH WINDOWS S LIÊN KẾT DLL VỚI ỨNG DỤNG WIN32 API Tạo Project loại “Win32 Dynamic Link Library”, với tên “MyWin32DLL” y Tạo Project loại “Win32 Application” với tên là “MyWin32Sample” y p Biên dịch và chạy chương trình Copy tập tin MyWin32DLL.DLL vào thư mục Debug của “MyWin32Sample” Copy tập tin MyWin32DLL.LIB . 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. 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. ĐẠ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