Đệ Muốn Hỏi Về Cách Tạo Thư Viện Trong C Ách Tạo Thư Viện Riêng Trong C++

Chào các bạn đang theo dõi khóa học lập trình trực tuyến ngôn từ C + + .Bạn đang xem : Cách tạo thư viện trong cThư viện ( library ) là một tập mã nguồn đã được đóng gói, hoàn toàn có thể được tái sử dụng trong nhiều chương trình khác nhau .

Thư viện trong ngôn ngữ C++ gồm 2 thành phần chính:

Những header files khai báo các hàm có thể được sử dụng trong chương trình.Tập hợp mã nguồn đã được biên dịch thành mã máy tương ứng với phần định nghĩa của các hàm đã được khai báo trong các header files.Những header files khai báo các hàm hoàn toàn có thể được sử dụng trong chương trình. Tập hợp mã nguồn đã được biên dịch thành mã máy tương ứng với phần định nghĩa của các hàm đã được khai báo trong các header files .Nhiều thư viện khi cung ứng đã được biên dịch sẵn vì nhiều nguyên do. Thông thường, hiếm khi có sử chỉnh sửa trong phần thư viện, nên không cần phải biên dịch nhiều lần. Thư viện cũng được biên dịch sẵn thành mã máy để tránh người dùng truy vấn và chỉnh sửa .

Có 2 kiểu thư viện: thư viện liên kết tĩnh (static library) và thư viện liên kết động (dynamic library).

Trong bài học kinh nghiệm này, tất cả chúng ta sẽ khám phá xem thư viện link tĩnh là gì ? Cách sử dụng như thế nào ? Và cùng thử tạo ra một thư viện link tĩnh cho riêng mình .

Thư viện liên kết tĩnh (static library)

Thư viện liên kết tĩnh là một tập hợp những thủ tục, những chương trình con đã được biên dịch và liên kết trực tiếp đến chương trình của các bạn. Khi các bạn biên dịch một chương trình có sử dụng thư viện liên kết tĩnh, tất cả những hàm trong thư viện đó trở thành một phần trong chương trình thực thi. Trên hệ điều hành Windows, các bạn sẽ thấy thư viện liên kết tĩnh có phần mở rộng .lib, và trên hệ điều hành Linux sẽ có phần mở rộng .a.

Ưu điểm của thư viện liên kết tĩnh là khi bạn phân phối chương trình đến người dùng, bạn chỉ cần gửi phần chương trình thực thi, vì phần thư viện đã gắn liền với chương trình thực thi rồi. Điều này cũng đảm bảo thư viện sử dụng luôn tương thích với chương trình.

Nhược điểm của thư viện liên kết tĩnh là mỗi lần có cập nhật mới, các bạn phải biên dịch lại toàn bộ thư viện. Kiểu thư viện này cũng gây tốn kém tài nguyên bộ nhớ khi toàn bộ thư viện phải được gắn liền với chương trình thực thi.

Bây giờ, tất cả chúng ta cùng nhau làm từng bước để tạo ra một thư viện link tĩnh đơn thuần .Tạo một dự án để xây dựng thư viện liên kết tĩnhTạo một dự án Bất Động Sản để thiết kế xây dựng thư viện link tĩnh

Chúng ta cùng tạo một Project mới bằng cách chọn File -> New -> Project:

*

Tại đây, với Visual Studio 2015/2017, mình chọn kiểu Project là Static Library, đặt tên là MathStaticLib. Thư viện này sẽ chứa một số hàm toán học đơn giản.

Sau khi nhấn OK, Visual Studio IDE sẽ tạo ra một dự án Bất Động Sản mới với cấu trúc như bên dưới. Lúc này, các bạn chưa cần chăm sóc đến chúng làm gì .

*

Sau khi build thử dự án này, kết quả biên dịch sẽ được tổng hợp lại bên trong 1 file có tên là MathStaticLib.lib như bên dưới:

*
Vì mình đang để ở chính sách build Debug, nên file thư viện này sẽ nằm trong thư mục Debug, và thích hợp với các dự án Bất Động Sản khác ở trong chính sách build Debug .Xem thêm : 99 Hình Ảnh Buồn Về Tình Bạn Với Ý Nghĩa Sâu Sắc, Tổng Hợp Những Hình Ảnh Đẹp Về Tình Bạn*Sau này, các bạn cũng nên build thêm một bản Release, bản này sẽ dùng để phân phối đến những lập trình viên khác sử dụng để Release loại sản phẩm của họ .Đến đây, coi như tất cả chúng ta đã thành công xuất sắc trong trong bước đầu tạo một thư viện link tĩnh. Nếu có trục trặc gì xảy ra, các bạn nên xem lại trước khi đến với phần tiếp theo .Tạo phần header file cho thư việnTạo phần header file cho thư việnBây giờ, tất cả chúng ta cùng tạo một header file đơn thuần tiềm ẩn các khai báo tính năng có trong thư viện :*Các bạn thêm file này vào thư viện như cách thêm một header file vào một chương trình .Xây dựng phần định nghĩa cho các chức năng trong thư việnXây dựng phần định nghĩa cho các công dụng trong thư viện

Tiếp theo là thêm phần định nghĩa cho mỗi chức năng đã khai báo:

*
Đến đây, nếu các bạn không include “ stdafx. h ” vào thì compiler sẽ báo lỗi. Đây là file mà Micrsoft Visual Studio sử dụng để báo cho compiler biết những file đã từng được biên dịch một lần và không cần biên dịch lại ( theo mình biết đơn thuần là vậy, các bạn mới mở màn cũng không cần chăm sóc lắm đến file này, nếu thấy compiler báo lỗi thiếu file đó thì cứ include vào thôi ) .Sử dụng thư viện liên kết tĩnh trong chương trình của bạnSử dụng thư viện link tĩnh trong chương trình của bạnLúc này, các bạn thử biên dịch thư viện lại một lần nữa :

*
Nếu hiệu quả tương tự như như trên nghĩa là các bạn đã có một bộ thư viện link tĩnh Math đơn thuần cho riêng mình rồi .Điều tất cả chúng ta cần chăm sóc giờ đây là làm thế nào để sử dụng thư viện này trong dự án Bất Động Sản hoặc chương trình khác .Mình sẽ hướng dẫn các bạn một cách đơn thuần mà Visual Studio năm ngoái / 2017 có tương hỗ. Nhưng trước hết, mình mở lại dự án Bất Động Sản mẫu mình đã sử dụng trong các bài học kinh nghiệm trước :

Mình đã clean thật sạch, và chỉ để lại một file main.cpp để dùng thử thư viện mình vừa tạo ra .

Bây giờ, chúng ta cần vào phần thuộc tính (Properties) của dự án hiện tại để cấu hình một số thứ trước khi sử dụng thư viện liên kết tĩnh. Nhưng để thuận tiện hơn, chúng ta cùng tạo một thư mục include và thư mục lib trong thư mục chứa project hiện hành.

Thư mục include sẽ chứa các header files của thư viện. Trong thư viện MathStaticLib, chúng ta chỉ có tạo ra một header file duy nhất, nên chỉ cần copy file đó vào trong thư mục include vừa tạo ra của chương trình của các bạn:

*

Và thư mục lib sẽ chứa phần mã nguồn thư viện đã biên dịch thành gói .lib:

*

Bây giờ, chúng ta cùng vào thực hiện một số cấu hình đơn giản để sử dụng. Các bạn click chuột phải vào dự án, chọn Properties -> C/C++ -> General:

Đây sẽ là nơi các bạn trỏ đường dẫn đến thư mục chứa các header files của thư viện link tĩnh vừa tạo :*

Như mình đã nói ở trên, các file header đã được copy vào trong thư mục include. Kí tự “./” đại diện cho thư mục hiện hành của dự án.

Bước tiếp theo, chúng ta cần cấu hình cho chương trình hiện tại trỏ đến thư mục chứa các file .lib trong thư mục lib. Từ cửa sổ Properties, các bạn chọn thẻ Linker -> General, rồi tìm đến dòng Additional Library Directories:

*Chỉ còn một bước nữa là xong phần thông số kỹ thuật rồi các bạn .

Cũng trong cửa sổ Properties, các bạn chọn thẻ Linker -> Input, tìm đến dòng Additional Dependencies:

*Trong phần này, các bạn điền vào tên các thư viện cần dùng trong chương trình kèm theo phần đuôi lan rộng ra nha .Chạy chương trình

Chạy chương trình

Giờ thì tất cả chúng ta đã hoàn toàn có thể gọi đến các hàm đã được định nghĩa trong thư viện :# include # include ” MathStaticLib. h ” int main ( ) { std :: cout Một điểm đặc biệt quan trọng là sau khi build chương trình xong, các bạn hoàn toàn có thể copy file thực thi. exe ra bất kể thư mục nào khác nhưng vẫn hoàn toàn có thể chạy được, vì phần thư viện đã được link cứng vào bên trong chương trình .

Hẹn gặp lại các bạn trong bài học tiếp theo trong khóa học lập trình C++ hướng thực hành.