Tải bản đầy đủ (.docx) (17 trang)

Xây dựng thư viện liên kết động và tĩnh trong CC++

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.58 MB, 17 trang )

[Type here]
ĐẠI HỌC KHOA HỌC TỰ NHIÊN – ĐHQG TP.HCM
KHOA CÔNG NGHỆ THÔNG TIN

NHẬP MÔN LẬP TRÌNH
BÁO CÁO ĐỒ ÁN 3
ĐỀ TÀI: XÂY DỰNG THƯ VIỆN HỖ TRỢ LẬP TRÌNH
THỰC HIỆN: NHÓM 23 – LỚP 14CTT2
TRƯƠNG VĂN CÔNG HẬU – 1412157
NGUYỄN THANH HƯỞNG – 1412220
TÔN TRẦN THIỆN KHIÊM – 1412247
HỒ CHÍ MINH, THÁNG 1 - NĂM 2015
MỤC LỤC
2
DANH MỤC HÌNH ẢNH
3
Nhập môn lập trình – Báo cáo đồ án 3 – Đề tài 4
A. THÔNG TIN ĐỒ ÁN
I. Giới thiệu thông tin nhóm
1. Trương Văn Công Hậu – 1412157
2. Nguyễn Thanh Hưởng – 1412220 – Trưởng nhóm
3. Tôn Trần Thiện Khiêm – 1412247
II. Bảng phân chia công việc
STT Nội dung công việc Cách thực hiện Phân công Ghi Chú
1. Tìm hiểu chung về các khái niệm
liên quan đến thư viện liên kết
Tìm hiểu, trình bày
bằng file word, gửi
cho nhau để trao
đổi, bổ sung
Tất cả Kiến thức chung


cần biết, nắm của
đề tài (Khi nhận
được đề tài)
2. Tìm hiểu và viết báo cáo về thư
viện liên kết tĩnh
Viết báo cáo file
word, gửi Hưởng
tổng hợp
Hậu Hưởng góp ý,
chỉnh sửa, tổng hợp
lại
Gửi Hưởng trước
27/12/2014
3. Tìm hiểu và viết báo cáo về thư
viện liên kết động
Viết báo cáo file
word, gửi Hưởng
tổng hợp
Khiêm Hưởng góp ý,
chỉnh sửa, tổng hợp
lại
Gửi Hưởng trước
27/12/2014
4. Tìm hiểu và viết báo cáo cách xây
dựng thư viện liên kết tĩnh
Viết báo cáo file
word, gửi Hưởng
tổng hợp
Hậu Hưởng góp ý,
chỉnh sửa, tổng hợp

lại
Gửi Hưởng trước
29/12/2014
5. Tìm hiểu và viết báo cáo cách xây
dựng thư viện liên kết động
Viết báo cáo file
word, gửi Hưởng
tổng hợp
Khiêm Hưởng góp ý,
chỉnh sửa, tổng hợp
lại
Gửi Hưởng trước
29/12/2014
6. Xây dựng thư viện xử lí chuỗi Thực hiện trên VS
2010
Hưởng Căn cứ vào báo cáo
của Khiêm và Hậu
Trước 3/1/2014
7. Viết báo cáo quá trình làm Word Hưởng Sau khi hoàn thành
Trước 5/1/2014
8. Làm slide báo cáo Công cụ: Phần
mềm Powerpoint
Khiêm Sau khi có file
word
Nhóm 23 Page 4
Nhập môn lập trình – Báo cáo đồ án 3 – Đề tài 4
Gửi Hưởng trước
6/1/2015
9. Nộp bài Tổng hợp Hậu Trước Deadline
III. Sơ lược đề tài

1. Nội dung đề tài
Đề tài 4: Xây dựng thư viện hỗ trợ lập trình
Giảng viên ra đề: Đặng Đăng Khoa
Mô tả:
Thư viện liên kết là một cách giúp đơn giản hóa việc lập trình, giúp các lập trình viên chia sẻ các hàm hỗ
trợ với nhau nhưng không cần cung cấp mã nguồn. Người sử dụng sẽ đỡ phải biên dịch lại, chỉ cần thêm
thư viện vào project của mình và gọi hàm thôi, các hàm sẽ được bảo vệ không bị người khác thêm, xóa,
sửa ….Tuy nhiên cách này cũng có một số bất lợi.
2. Yêu cầu
- Tìm hiểu cách xây dựng thư viện hỗ trợ lập trình bằng ngôn ngữ C hoặc C++ theo hai cách:
o Thư viện liên kết tĩnh (có phần mở rộng là .lib) – Static-link Library
o Thư viện liên kết động (có phần mở rộng là .dll) – Dynamic-link Library
- Viết báo cáo đánh giá, so sánh hai cách này với nhau. Sinh viên có thể so sánh với các cách xây dựng
thư viện hoặc chia sẻ mã nguồn kiểu khác (nếu có thể).
- Viết báo cáo hướng dẫn từng bước xây dựng thư viện theo hai cách này.
- Xây dựng thư viện hỗ trợ các hàm xử lý chuỗi như trong bài 2.3, đồ án 1 dưới dạng liên kết tĩnh và
động.
3. Lưu ý
Bài này chỉ yêu cầu sinh viên tìm hiểu ở mức độ vừa đủ để chuyển các bài tập trong môn Nhập môn
lập trình thành các tập tin thư viện, chia sẻ cho người khác sử dụng lại được. Không đòi hỏi những kiến
thức phức tạp hơn liên quan đến môn học khác.
B. KẾT QUẢ TÌM HIỂU
I. Tìm hiểu về thư viện liên kết
1. Các khái niệm liên quan
 Liên kết là cách thức mà trình biên dịch nhúng/kết hợp các đoạn mã thực thi của những module
thư viện (lib) vào chương trình.
 Có 2 cách liên kết:
 Liên kết tĩnh (Static linking)
 Liên kết động (Dynamic linking)
Nhóm 23 Page 5

Nhập môn lập trình – Báo cáo đồ án 3 – Đề tài 4
4. Thư viện liên kết tĩnh (Static linking library)
4.1. Giới thiệu thư viện liên kết tĩnh (Static linking library)
• Dạng file: *.LIB
• Chứa mã lệnh nhị phân của các hàm thư viện
• Dùng để nhúng vào file chương trình khi thực hiện giai đoạn liên kết (linking) của quá trình biên
dịch
• Trình biên dịch sẽ copy đoạn mã lệnh của hàm thư viện vào trong những module gọi
4.2. Ưu điểm:
• 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
• Chương trình sẽ chạy nhanh hơn (nếu kích thước nhỏ)
4.3. Khuyết điểm:
• Đoạn mã lệnh được nhúng vào file chương trình .
• Kích thước chương trình 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ông tối ưu
• 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
5. Thư viện liên kết động (Dynamic linking library)
5.1. File *.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 DLL .Sử dụng khi dùng cách thức load-time dynamic linking
5.2. 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 có khi thực hiện ứng dụng
• 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 dụng
• Ứng dụng chỉ cần lưu thông tin của hàm thư viện, và khi cần, Hệ điều hành sẽ tải các hàm thư
viện vào bộ nhớ

Nhóm 23 Page 6
Nhập môn lập trình – Báo cáo đồ án 3 – Đề tài 4
5.3. Ưu điểm
• Kích thước của ứng dụng nhỏ
• Nhiều ứng dụng có thể dùng chung 1 DLL, do đó, tiết kiệm bộ nhớ (thông thường, các ứng dụng
có data riêng, nhưng có thể chia xẻ mã lệnh)
• 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, chchỉ cần thay thế file DLL, các file chương trình khác không bị ảnh hưởng
5.4. Nhược điểm
• Khó sử dụng hơn.
IV. Xây dựng thư viện hỗ trợ các hàm xử lý chuỗi trong bài 2.3 – Đồ án 1
Xây dựng các hàm tính toán cơ bản (+,-,*,/) xử lí cho chuỗi chứa số
1. Dưới dạng thư viện liên kết tĩnh (cài đặt trên C)
Bước 1. Mở VS 2010  Vào File  New Project  Win32 Console  Đăt tên (Thuvienlienket)
 Next  Static library  Bỏ chọn Precompiled header  Finish (như hình)
Hình Tạo project mới
Nhóm 23 Page 7
Nhập môn lập trình – Báo cáo đồ án 3 – Đề tài 4
Hình : Thư viện liên kết tĩnh
Bước 2. Viết file *.h chứa protype các hàm vào mục Header files và file *.cpp mô tả các hàm
tương ứng (nhóm sẽ xây dựng thư viện chứa các hàm xử lý cơ bản (+,-,*,/) số ở dạng chuỗi sau
khi tách được (Câu 3, đồ án 1) vào thư mục Source Files. (như hình)
Nhóm 23 Page 8
Nhập môn lập trình – Báo cáo đồ án 3 – Đề tài 4
Bước 3. Biên
dịch
(F7)
(biên
dịch
thành công)

Nhóm 23 Page 9
Hình : Biên dịch kiểm tra
Hình : Viết file .h và .cpp
Nhập môn lập trình – Báo cáo đồ án 3 – Đề tài 4
Bước 4. Vào thư mục Debug/Release của Project vừa làm, ta thu được file “Thuvienlienket.lib”
và trong thư mục Debug . Ta sẽ sử dụng file này để làm việc tiếp theo (nên copy qua project sử
dụng)
Bước 5. Tiếp theo, ta add một Project mới để test. Tiến hành add như bình thường
Bước 6. Add file Lienkettinh.h vào thư mục Header Files
Bước 7. Viết file main.cpp đơn giản để test thư viện vừa xây dựng.
Nhóm 23 Page 10
Hình : Các file sinh ra
Hình Hàm test đơn giản
Nhập môn lập trình – Báo cáo đồ án 3 – Đề tài 4
Bước 8. Tiến hành thiết lập để sử dụng được thư viện
Bước 9. Set up as Startup project cho Test, vào Project  Properties (Alt + F7)
Bước 10. Qua thẻ Linker, chọn thẻ Input, chọn Additional Dependencies, Edit và paste
đường dẫn file “Thuvienlienket.lib” hoặc đánh tên tệp (nếu copy tệp đó qua Project Test) và
OK
Hình :Thiết lập đường dẫn
Bước 11. Cuối cùng, ta chạy thử với bộ test đơn giản như trên ta được kết quả đúng.
Nhóm 23 Page 11
Hình : Test thử nghiệm
Nhập môn lập trình – Báo cáo đồ án 3 – Đề tài 4
6. Dưới dạng thư viện liên kết động (cài đặt trên C)
Bước 1. Làm tương tự như trên với các add project vào dự án đã có, đặt tên
Thuvienlienketdong
Hình : Tạo dự án thư viện liên kết động
Chọn DLL và Empty Project
Hình Chọn DLL

Nhóm 23 Page 12
Nhập môn lập trình – Báo cáo đồ án 3 – Đề tài 4
Bước 2. Viết các file .h và .cpp vào tương tự như ở mục 1, ta được
Hình : Viết file .h và .cpp tương tự
Bước 3. Sau đó Build thử (thành công) để tạo ta các file liên quan của thư viện như sau: Ta chỉ
sử dụng 2 file .dll và .lib (Copy 2 file này qua project sử dụng Testdong)
Nhóm 23 Page 13
Nhập môn lập trình – Báo cáo đồ án 3 – Đề tài 4
Hình : Build thử ta được các file
Bước 4. Xây dựng hàm test tương tự (ở đây là Testdong) như ở mục 1
Bước 5. Thiết đặt thuộc tính sử dụng thư viện:
Chọn Testdong vừa tạo, kích phải chọn References
Bước 6. Qua tab C/C++, thẻ General, paste đường dẫn/tên của tập tin “.lib” tạo ra của project
Thuvienlienket vào ô Addidional Include Derectories rồi OK
Nhóm 23 Page 14
Hình Hàm test
Nhập môn lập trình – Báo cáo đồ án 3 – Đề tài 4
Hình Thiết lập tên file/đường dẫn tới project
Nhóm 23 Page 15
Nhập môn lập trình – Báo cáo đồ án 3 – Đề tài 4
Bước 7. Cuối cùng, chạy thử (thành công)
Hình : Kết quả hoàn thành
Nhóm 23 Page 16
Nhập môn lập trình – Báo cáo đồ án 3 – Đề tài 4
PHỤ LỤC
(Các nguồn tham khảo)
1.
files-trong-visual-cpp-2005.cpp
2.
vien-dll-trong-visual-cpp-6-0.cpp

3.
4.
5.
dynamic-linking
6. Bài giảng của Thầy Trần Ngọc Bảo – ĐHSP HCM về Thư viện liên kết
động
Nhóm 23 Page 17

×