LapTrinhBlockchain

Chia sẻ kiến thức về Lập Trình Blockchain

Kiến thức lập trình, Kiến thức phần mềm, Lập trình C/C++, Nâng cao Kiến thức

Tổng hợp một số thư viện mã nguồn mở C/C++ hay dùng

Tổng hợp một số thư viện mã nguồn mở C/C++ hay dùng

Tổng hợp một số thư viện mã nguồn mở C/C++ hay dùng

Chia sẻ bài viết
5
(6)

Bài viết này mình sẽ tổng hợp lại một số thư viện hay sử dụng khi làm việc với các dự án C/C++.

Thư viện thông dụng

Thư viện STD (C++ Standard Library)

Thư viện STD (C++ Standard Library) là một thư viện tiêu chuẩn được hỗ trợ bởi ISO (Tổ chức Tiêu chuẩn hóa Quốc tế). Nó hỗ trợ hầu hết các kiểu dữ liệu, các thuật toán tối ưu, thao tác tới hệ thống File,… Chi tiết các thành phần hỗ trợ bạn xem tại: C++ Standard Library headers. Hầu hết tất cả các project C/C++ đều sử dụng thư viện STD.

Thư viện Boost

Boost là một thư việnmiễn phí mã nguồn mở được phân phối theo Boost Software License. Nó là một tập hợp các thư viện C++ được nhiều tác giả công nhận, chứa các gói mã nhằm mục đích hỗ trợ đại số tuyến tính, tạo số giả ngẫu nhiên, đa luồng, xử lý hình ảnh, biểu thức chính quy, xử lý chuỗi và văn bản.

Đây cũng là thư viện được nhiều các dự án lớn sử dụng. Bạn tham khảo tài liệu tại: Boost 1.80.0 Library Documentation. Nhưng đây là một thư viện rất lớn và phức tạp, để sử dụng hết tính năng của nó bạn cần nhiều thời gian để tìm hiểu. Và cũng vì vậy khi sử dụng thư viện này sẽ làm kích thước tệp thực thi tăng lên rất nhiều.

Lập trình nhúng / IoT

Thư viện POCO

Thư viện POCO thư viện C++ hỗ trợ đa nền tảng được thiết kế đặc biệt giúp dễ sử dụng và phục vụ mục đích hiệu suất. Thư viện Poco rất thích hợp cho phát triển nhúng (trong các ngành như IoT, ô tô, an ninh, tự động hóa công nghiệp,…).

Họ có cả phiên bản thương mại và phiên bản mã nguồn mở được cấp phép theo Boost Software License 1.0 (Bản POCO trên Github).

Mật mã Crypto, Blockchain

TrustWallet Core

TrustWallet-Core là thư viện mã nguồn mở phần wallet-core của ứng dụng ví nổi tiếng TrustWallet, nó tích hợp gần như hầu hết các blockchain hiện đang có hiện nay. Ví TrustWallet này khá mạnh và được sự hỗ trợ của Binance. Chi tiết tài liệu để phát triển bạn xem tại: TrustWallet Developer

Thư viện OpenSSL

OpenSSL là chính là con dao vạn năng dành cho mật mã. Nó bao gồm các quy trình mật mã toàn năng có mục đích chung trong thành phần libcrypto và triển khai tất cả các giao thức TLS trong thành phần libssl. Nó là một thư viện C nhưng nó rất quan trọng trong các ứng dụng mật mã.

Thư viện này nổi tiếng với một bug có tên Heartbleed. Rất hiếm trường hợp một thư viện được cả thế giới chú ý bởi một bug và có trang web riêng. Bạn có thể đọc hết tất cả về nó ở đây.

Thư viện secp256k1

Thư viện secp256k1 là thư viện C được tối ưu hóa cho chữ ký ECDSA và các thao tác liên quan tới đường cong secp256k1.

Thư viện này được thiết kế để trở thành thư viện công khai có chất lượng cao nhất dành cho mật mã trên đường cong secp256k1. Tuy nhiên, trọng tâm chính của sự phát triển của nó là để sử dụng trong hệ thống Bitcoin.

Thư viện aleth

Thư viện aleth tương tự thư viện Web3 nhưng sử dụng C/C++.

Thư viện Crypto++® Library 8.7

Thư viện Crypto++® Library 8.7 là thư viện C++ miễn phí cho mảng mật mã với hầu hết các thuật toán mã hóa thông dụng.

Xử lý âm thanh và hình ảnh

Thư viện FFmpeg

FFmpeg là thư viện dành cho mục đích xử lý âm thanh và video. Ngoài ffmpeg có thể thực thi dòng lệnh, dự án cũng bao gồm một bộ thư viện chất lượng cao cho các chức năng như mã hóa và giải mã cho codec âm thanh/video, công cụ phân kênh (demuxers) và ghép kênh (muxers) cho các định dạng vùng chứa đa phương tiện, bộ lọc phương tiện, chia tỷ lệ hình ảnh và hoạt động chuyển đổi định dạng không gian màu giữa các bên khác. Nó là một thư viện mã nguồn mở và miễn phí được phân phối theo giấy phép GNU LGPL V2.1.

Thư viện OpenCV

Có rất nhiều thư viện C++ dành cho thao tác hình ảnh và thị giác máy tính, nhưng không có gì bằng được tính linh hoạt của OpenCV. Nó có thư viện thị giác máy tính, học máy và học sâu trong thời gian thực để nhận dạng khuôn mặt, phát hiện đối tượng và trích xuất mô hình 3-D. Đây là một thư viện được thiết lập tốt và được duy trì tốt với giấy phép Apache mã nguồn mở được cho phép.

Đồ họa Game

Thư viện Dear ImGui

Dear ImGui là một thư viện giao diện người dùng đồ họa tuyệt vời cho C++, có thể thấy được từ số lượng ứng dụng sử dụng nó ở đây. Nó nhanh chóng, di động, kết xuất bất khả tri và khép kín.

Mục tiêu thiết kế của nó là sự đơn giản và năng suất, điều này làm cho nó đặc biệt phù hợp với các công cụ trò chơi, các ứng dụng 3D trong thế giới thực, ứng dụng toàn màn hình và các ứng dụng nhúng. Nó có mã nguồn mở theo giấy phép miễn phí, dễ dàng và sẵn sàng tải xuống thông qua Github.

Cơ sở dữ liệu

Thư viện SQLite

SQLite là một thư viện ngôn ngữ C triển khai một công cụ cơ sở dữ liệu SQL đầy đủ tính năng, khép kín, tuân thủ ACID. SQL là công cụ cơ sở dữ liệu được sử dụng nhiều nhất trên thế giới và do đó nó là một thư viện rất quan trọng mà bạn nên biết.

Mã nguồn của SQLite là hoàn toàn được public và mọi người có thể sử dụng miễn phí với bất kỳ mục đích nào! Đây là một thư viện duy nhất thường được biên dịch vào ứng dụng khách thông qua một tệp mã nguồn duy nhất được gọi là hợp nhất (amalgamation).

JSON và RESTFull

Thư viện JSON

JSON là một thư viện với một tệp tiêu đề duy nhất làm việc với JSON trong C++. Nó có cú pháp trực quan và giấy phép MIT dễ dàng. Vì đây là thư viện chỉ dành cho tiêu đề và được triển khai trong một tệp tiêu đề json.hpp duy nhất, nên việc tích hợp với thư viện này là không đáng kể.

Thư viện JsonCpp

JsonCpp là một thư viện C ++ cho phép thao tác với dữ liệu dạng JSON.các giá trị JSON, bao gồm tuần tự hóa và giải mã hóa đến và từ các chuỗi. Tài liệu thư viện cũng khá chi tiết và dễ dùng: JsonCpp Documentation

Thư viện RapidJson

Thư viện RapidJson là bộ phân tích và chuyển đổi dữ liệu JSON nhanh trên C++ hỗ trợ cả hai kiểu SAX/DOM.

Thư viện CppRestSdk

Thư viên cpprestsdk là thư viện được tạo ra bởi Microsoft, giúp các nhà phát triển C++ kết nối và tương tác với các dịch vụ của Microsoft.

Unit test và Automation test

Thư viện GoogleTest

Rất nhiều lập trình viên C++ thích dùng GoogleTest để sử dụng cho Unit Test. Chi tiết tài liệu xem tại: GoogleTest User’s Guide

Truyền vào trao đổi thông điệp

Eclipse Mosquitto

Nếu bạn có cơ hội làm việc với giao thức MQTT (Message Queuing Telemetry Transport) trong C++, bạn nên sử dụng Eclipse Mosquitto. MQTT là một giao thức nhẹ và hiệu quả, yêu cầu tài nguyên tối thiểu và do đó phù hợp với các thiết bị tiêu thụ điện năng thấp như vi điều khiển nhỏ.

Kiến trúc của MQTT là Pub/Sub với việc các client MQTT giao tiếp với máy chủ môi giới MQTT (broker). Thư viện Eclipse Mosquitto có sẵn ở đây và có các tiện ích cho cả publishers (nơi gửi thông điệp) và subscribers (nơi nhận thông điệp).

Trí tuệ nhận tạo (AI)

Thư viện Tensorflow

Tensorflow là framework nổi tiếng được viết bằng C++ dành cho máy học, chúng tôi cá rằng các bạn đều biết về nó rồi. Nó bao gồm các thư viện C++ để thực hiện nhiều tác vụ phổ biến khi phát triển mô hình học máy. Ban đầu, nó được phát triển bởi các nhà nghiên cứu trong nhóm Google Brain làm việc về các vấn đề trong học máy và mạng nơ-ron sâu. Nó có giấy phép mã nguồn mở Apache 2.0 và có sẵn tại đây.

Lập trình chuyên sâu

Thư viện oneAPI Threading Building Blocks

Threading Building Blocks do Intel phát triển hiện đã trở thành nguồn mở và được đổi tên thành oneAPI Threading Building Blocks (oneTBB). Nó cho phép bạn viết các chương trình C++ song song tận dụng tối đa lợi thế của các bộ xử lý đa lõi hiện đại, có thể di động, có thể kết hợp và không lỗi thời. Nó có giấy phép mã nguồn mở Apache 2.0, bạn có thể kiểm tra tại đây.

Bài viết này có hữu ích với bạn?

Kích vào một biểu tượng ngôi sao để đánh giá bài viết!

Xếp hạng trung bình 5 / 5. Số phiếu: 6

Bài viết chưa có đánh giá! Hãy là người đầu tiên đánh giá bài viết này.

Trả lời

Giao diện bởi Anders Norén