1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

17 889 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 17
Dung lượng 2,17 MB

Nội dung

A.THÔNG TIN ĐỒ ÁN1I.Giới thiệu thông tin nhóm1II.Bảng phân chia công việc1III.Sơ lược đề tài21.Nội dung đề tài22.Yêu cầu23.Lưu ý2B.KẾT QUẢ TÌM HIỂU2I.Tìm hiểu về thư viện liên kết21.Các khái niệm liên quan22.Thư viện liên kết tĩnh (Static linking library)23.Thư viện liên kết động (Dynamic linking library)3II.Xây dựng thư viện hỗ trợ các hàm xử lý chuỗi trong bài 2.3 – Đồ án 131.Dưới dạng thư viện liên kết tĩnh (cài đặt trên C)32.Dưới dạng thư viện liên kết động (cài đặt trên C)8PHỤ LỤC12DANH MỤC HÌNH ẢNHHình 1 Tạo project mới4Hình 2: Thư viện liên kết tĩnh4Hình 4: Biên dịch kiểm tra5Hình 3: Viết file .h và .cpp5Hình 5: Các file sinh ra6Hình 6 Hàm test đơn giản6Hình 7:Thiết lập đường dẫn7Hình 8: Test thử nghiệm7Hình 9: Tạo dự án thư viện liên kết động8Hình 10 Chọn DLL8Hình 11: Viết file .h và .cpp tương tự9Hình 12: Build thử ta được các file9Hình 13 Hàm test10Hình 14 Thiết lập tên fileđường dẫn tới project10Hình 15: Kết quả hoàn thành11 A.THÔNG TIN ĐỒ ÁNI.Giới thiệu thông tin nhóm1.Trương Văn Công Hậu – 14121572.Nguyễn Thanh Hưởng – 1412220 – Trưởng nhóm3.Tôn Trần Thiện Khiêm – 1412247II.Bảng phân chia công việcSTTNội dung công việcCách thực hiệnPhân côngGhi Chú1.Tìm hiểu chung về các khái niệm liên quan đến thư viện liên kếtTìm hiểu, trình bày bằng file word, gửi cho nhau để trao đổi, bổ sungTấ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ĩnhViết báo cáo file word, gửi Hưởng tổng hợpHậuHưởng góp ý, chỉnh sửa, tổng hợp lạiGửi Hưởng trước 271220143. Tìm hiểu và viết báo cáo về thư viện liên kết độngViết báo cáo file word, gửi Hưởng tổng hợpKhiêmHưởng góp ý, chỉnh sửa, tổng hợp lạiGửi Hưởng trước 271220144. 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ĩnhViết báo cáo file word, gửi Hưởng tổng hợpHậuHưởng góp ý, chỉnh sửa, tổng hợp lạiGửi Hưởng trước 291220145.Tìm hiểu và viết báo cáo cách xây dựng thư viện liên kết độngViết báo cáo file word, gửi Hưởng tổng hợpKhiêmHưởng góp ý, chỉnh sửa, tổng hợp lạiGửi Hưởng trước 291220146.Xây dựng thư viện xử lí chuỗiThực hiện trên VS 2010HưởngCăn cứ vào báo cáo của Khiêm và HậuTrước 3120147.Viết báo cáo quá trình làmWordHưởngSau khi hoàn thànhTrước 5120148.Làm slide báo cáoCông cụ: Phần mềm PowerpointKhiêmSau khi có file wordGửi Hưởng trước 6120159.Nộp bàiTổng hợpHậuTrước DeadlineIII.Sơ lược đề tài1.Nội dung đề tàiĐề tài 4: Xây dựng thư viện hỗ trợ lập trìnhGiảng viên ra đề: Đặng Đăng KhoaMô 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) – Staticlink Libraryo Thư viện liên kết động (có phần mở rộng là .dll) – Dynamiclink 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.

Trang 1

ĐẠ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

Trang 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

Trang 5

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)

Trang 6

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ớ

Trang 7

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

Trang 8

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)

Trang 9

Bước 3. Biên

dịch (F7) (biên dịch

Hình : Biên dịch kiểm tra Hình : Viết file h và cpp

Trang 10

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

Hình : Các file sinh ra

Trang 11

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

Hình : Test thử nghiệm

Trang 12

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

Trang 13

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)

Trang 14

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

Hình Hàm test

Trang 15

Hình Thiết lập tên file/đường dẫn tới project

Trang 16

Bước 7. Cuối cùng, chạy thử (thành công)

Hình : Kết quả hoàn thành

Trang 17

PHỤ LỤC

(Các nguồn tham khảo)

http://diendan.congdongcviet.com/threads/t7399::su-dung-dll-files-trong-visual-cpp-2005.cpp

http://diendan.congdongcviet.com/threads/t9390::cach-tao-thu-vien-dll-trong-visual-cpp-6-0.cpp

http://stackoverflow.com/questions/1993390/static-linking-vs-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

Ngày đăng: 07/03/2015, 20:19

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w