Some aggregated list of C++ frameworks, libraries, and resources, initiated and maintained by fffaraz.
The content includes: standard libraries, web application frameworks, artificial intelligence, databases, image processing, machine learning, logs, code analysis, etc.
Standard library
C++ Standard Library: is a collection of classes and functions written in the core language and part of the C++ISO standard itself. Standard Template Library: A library of standard templates C POSIX library: The C standard library specification for the POSIX system ISO C++ Standards Committee: C++ Standards Committee Frame
C++ General Framework and Libraries Apache C++ Standard Library: is a collection of algorithms, containers, iterators, and other essential components ASL: The Adobe source code repository provides peer-reviewed and portable C++ source code repositories. Boost: A collection of a large number of generic C++ libraries. BDE: From the development environment of Bloomberg Info Labs. Cinder: An open-source development community that provides professional-quality creative coding. Cxxomfort: A lightweight, header-only library that ports some of the new features of C++11 to C++03. Dlib: A general, cross-platform C++ library designed using contractual programming and modern C++ technology. EASTL: EA-STL public section FFEAD-CPP: Enterprise Application Development Framework Folly: An open-source C++ library developed and used by Facebook JUCE: An all-encompassing C++ library for developing cross-platform software libPhenom: An event framework for building high-performance and highly scalable systems. LibSourcey: C++11 evented IO for real-time video streaming and high-performance web applications LibU: A multi-platform tool library written in C Loki: The design of C++ libraries, including the implementation of common design patterns and idioms. MiLi: A small C++ library with only header files openFrameworks: Develops C++ toolkits for creative coding. Qt: A cross-platform application and user interface framework Reason: A cross-platform framework that makes it easier for developers to use Java. Net and Python, which also meet their needs for C++ performance and benefits. ROOT: A set of object-oriented frameworks with all the features that can process and analyze large amounts of data very efficiently for the European Atomic Energy Agency. STLport: is a representative version of STL STXXL: A standard template library for additional large datasets. Ultimate++: C++ cross-platform rapid application development framework Windows Template Library: A C++ library for developing Windows applications and UI components Yomm11: Open multi-methods for C++11. Artificial intelligence
BTSK: Game Behavior Tree Launcher Tool Evolving Objects: A template-based, ANSI C++ evolutionary computing library that helps you write your own stochastic optimization algorithms very quickly. Neu: C++11 framework, a set of programming languages, a multipurpose software system for creating artificial intelligence applications. Asynchronous event loops
Boost.Asio: A cross-platform C++ library for networking and underlying I/O programming. libev: Feature-packed, high-performance time loop that slightly mimics libevent, but no longer has the same limitations as libevent, and also fixes some of its bugs. libevent: Event notification library libuv: Cross-platform asynchronous I/O. Audio
Audio, sound, music, digital music library FMOD: An easy-to-use, cross-platform audio engine and game creation tool for audio content. Maximilian: C++ Audio and Music Digital Signal Processing Library OpenAL: Open Source Audio Library — A cross-platform audio API Opus: A completely open, royalty-free, highly versatile audio codec Speex: Free codec, deprecated by Opus Tonic: C++ is easy to use and efficient audio synthesis Vorbis: Ogg Vorbis is a fully open, non-proprietary, royalty-free, universal compressed audio format. ecology
Bioinformatics, genomics and biotechnology libsequence: A C++ library for representing and analyzing population genetic data. SeqAn: Focusing on algorithms and data structures for biological data sequence analysis. Vcflib: A C++ library for parsing and processing VCF files Wham: Apply the associative test directly to the genetic structure variation of the BAM file. compress
Compress and archive libraries bzip2: A completely free, patented and high-quality data compression doboz: a compressed library that can be quickly decompressed PhysicsFS: A library that provides abstract access to various archives, mainly for video games, with design inspiration in part from Quake3's file subsystem. KArchive: A library for creating, reading, writing, and manipulating file archives such as zip and tar, which provides transparent compressed and decompressed data through a series of subclasses of QIODevice, using the gzip format. LZ4: Very fast compression algorithm LZHAM: Lossless compression database, the compression ratio is close to LZMA, but the decompression speed is much faster. LZMA: The default and universal compression method for the 7z format. LZMAT: and its fast real-time lossless data compression library miniz: Single C source file, compact/expansion compression library, using zlib compatible API, ZIP archive read/write, PNG write mode. Minizip: Zlib's latest bug fix, supports PKWARE disk crossing, AES encryption, and IO buffering. Snappy: Quickly compress and decompress ZLib: A very compact data stream compression library ZZIPlib: Provides read access to ZIP archives. Concurrency
Concurrent execution and multithreading Boost.Compute: C++ GPU compute library for OpenCL Bolt: A library of C++ templates optimized for GPUs C++React: A reactive programming library for C++11 Intel TBB: Intel thread building block Libclsph: OpenCL-based GPU-accelerated SPH fluid simulation library OpenCL: An open standard for heterogeneous systems for parallel programming OpenMP:OpenMP API Thrust: A parallel algorithm library similar to the C++ standard template library HPX: A universal C++ runtime system for parallel and distributed applications of any size VexCL: A library of C++ vector expression templates for OpenCL/CUDA. container
C++ B-tree: A template library based on the B-tree data structure to implement command memory containers Hashmaps: An implementation of an open addressing hash table algorithm in C++ Cryptography
Bcrypt: A cross-platform file encryption tool that allows encrypted files to be ported to all supported operating systems and processors. BeeCrypt: Botan: C++ cryptographic library Crypto++: A free C++ library for crypto schemes GnuPG: A complete implementation of the OpenPGP standard GnuTLS: A secure communication library that implements SSL, TLS, and DTLS protocols Libgcrypt libmcrypt LibreSSL: A free SSL/TLS protocol that is a fork of OpenSSL 2014 LibTomCrypt: A very comprehensive, modular, portable encryption tool libsodium: An encrypted library based on NaCI, stubborn and easy to use Nettle's underlying encryption library OpenSSL: A powerful, commercial, full-featured, open-source encryption library. Tiny AES128 in C: A small, portable encryption algorithm implemented in C that implements AES128ESB database
Databases, SQL servers, ODBC drivers and tools hiberlite: C++ object relationship mapping for Sqlite3 Hiredis: A very simple C client library for Redis databases LevelDB: Quickkey-value repository LMDB: An embedded key-value store that conforms to the four basic elements of the database MySQL++: A C++ wrapper that encapsulates MySql's C API RocksDB: Fast storage of embedded keys from Facebook SQLite: A fully embedded, full-featured relational database with only a few hundred KB that can be properly included into your project. Debugging
Debug libraries, memory and resource leak detection, unit tests Boost.Test: The Boost test library Catch: A sleek, C++-native framework that contains only headers for unit testing, test-driven development, and behavior-driven development. CppUnit: A C++ testing framework ported from JUnit CTest: CMake test driver googletest: Google C++ testing framework ig-debugheap: A multi-platform debug heap for tracking memory errors libtap: Write tests in C MemTrack — Used in C++ to track memory allocation microprofile - a cross-platform network attempt analyzer minUnit: A mini-unit testing framework written in C with only two macros Remotery: A single C file analyzer for web views UnitTest++: A lightweight C++ unit testing framework game engine
Cocos2d-x: A cross-platform framework for building 2D games, interactive books, presentations, and other graphics applications. Glit: A community project to build a free game engine for open-world 3D games. Irrlicht: An open-source, high-performance real-time #D engine written in C++ Polycode: An open-source framework for creating games implemented in C++ (bound to Lua). Graphical user interface
CEGUI: A flexible cross-platform GUI library FLTK: A fast, lightweight, cross-platform C++ GUI toolkit. GTK+: A cross-platform toolkit for creating graphical user interfaces gtkmm: The official C++ interface for the popular GUI library GTK+. imgui: Immediate mode graphical user interface with minimal dependencies libRocket: libRocket is a C++ HTML/CSS game interface middleware MyGUI: Fast, flexible, and simple GUI Ncurses: End user interface QCustomPlot: Qt drawing control with no more dependencies Qwt: Qt controls for user and technical applications QwtPlot3D: A feature-rich Qt/OpenGL-based C++ programming library that essentially provides a set of 3D controls OtterUI: OtterUI is a user interface development solution for embedded systems and interactive entertainment software PDCurses is a public graph function library that contains source code and precompiled libraries wxWidgets C++ library, which allows developers to create applications for widows, Mac OS X, Linux, and other platforms using a codebase Graphics
BGFX: Cross-platform rendering library Cairo: A 2D graphics library that supports multiple output devices Horde3D is a small 3D rendering and animation engine magnum C++11 and OpenGL 2D/3D graphics engine Ogre 3D is a scene-oriented, real-time, flexible 3D rendering engine (not a game engine) written in C++ OpenSceneGraph is a high-performance, open-source 3D graphics toolkit Panda3D is a framework for 3D rendering and game development, written in Python and C++. Skia is a complete library of 2D graphics for drawing text, graphics, and images urho3d cross-platform rendering and game engine. Image processing
Boost.GIL: Universal image library CImg: A small open-source C++ toolkit for image processing CxImage: An image processing and conversion library for loading, saving, displaying, and converting, and can process image formats including BMP, JPEG, GIF, PNG, TIFF, MNG, ICO, PCX, TGA, WMF, WBMP, JBG, J2K. FreeImage: An open-source library that supports common image formats and other formats required for multimedia applications today. GDCM: Grassroots DICOM library ITK: Cross-platform open source image analysis system Magick++: The C++ interface of the ImageMagick program MagickWnd: C++ interface for the ImageMagick program OpenCV: An open-source computer vision library tesseract-ocr: OCR engine VIGRA: A general C++ computer vision library for image analysis VTK: Open source free software system for 3D computer graphics, image processing and visualization. Internationalization
gettext :GNU `gettext’ IBM ICU: C, C++, and Java libraries with Unicode and global support libiconv: A library for encoding conversion between different character encodings Jason
frozen: Jason parse generator for C/C++ Jansson: A C library that encodes and processes Jason data jbson: A library for building and iterating on BSON data and Json documentation in C++14 JeayeSON: A very robust C++ JSON library that contains only header files JSON++: C++ JSON parser json-parser: A JSON parser written in portable ANSI C that takes up very little memory json11: A mini C++11 JSON library jute: A very simple C++ JSON parser ibjson: A JSON parsing and printing library in C that is easy to integrate with any model. libjson: A lightweight JSON library PicoJSON: JSON parsed serialization in C++, containing only the header file qt-json: A simple class for resolving JSON data and QVariant hierarchies QJson: A Qt-based library that maps JSON data to QVariant objects RapidJSON: A fast JSON parsing generator for C++ with both SAX and DOM styles of APIs YAJL: A fast streaming JSON parsing library in C Log
Boost.Log: The design is very modular and extensible easyloggingpp: C++ log library containing only a single header file. Log4cpp: A collection of C++ libraries with the flexibility to add logs to files, system logs, IDSA and others. templog: A lightweight C++ library that can add logs to your C++ application Machine learning
Caffe: A fast neural network framework CCV: A modern computer vision library with C language as the core mlpack: An extensible C++ machine learning library OpenCV: Open source computer vision library Recommender: A C library that uses collaborative filtering to recommend products/suggest products. SHOGUN: Shogun machine learning tool sofia-ml: A suite of fast incremental algorithms for machine learning Mathematics
Armadillo : A high-quality C++ linear algebra library with a good balance of speed and ease of use. The syntax is similar to MatlAB blaze: A high-performance C++ math library for dense and sparse algorithms. ceres-solver: A C++ library from Google for modeling and solving large complex nonlinear least squares problems. CGal: A collection of efficient and reliable ensemble algorithms cml: A free C++ math library for games and graphics Eigen: A library of advanced C++ template headers, including linear algebra, matrices, vector operations, numerical solving, and other related algorithms. GMTL: The Mathematical Graph Template Library is a set of tools that implement basic graphics extensively. GMP: A C/C++ library for high-precision calculations, handling signed integers, rational numbers, and floating-point numbers. Multimedia
GStreamer: A library for building graphics for media processing components LIVE555 Streaming Media: Multimedia streaming libraries using open standard protocols (RTP/RTCP, RTSP, SIP). libVLC: libVLC (VLC SDK) media framework QtAv: A multimedia playback framework based on Qt and FFmpeg that helps you write a player with ease SDL: Simple and direct control media layer SFML: Fast and easy multimedia library Internet
ACE: C++ object-oriented networking becomes a toolkit Boost.Asio: A cross-platform C++ library for networking and underlying I/O programming Casablanca:C++ REST SDK cpp-netlib: A collection of open-source libraries for advanced network programming Dyad.c: Asynchronous network for C libcurl: A multiprotocol file transfer library Mongoose: Very lightweight web server Muduo: A C++ non-blocking network library for Linux multithreaded servers net_skeleton: TCP client/server library for C/C++ nope.c: Ultra-lightweight C-based software platform for scalable server-side and web applications. For C programmers, consider node.js Onion: A C HTTP server library designed to be lightweight and easy to use. POCO: A C++-class library for building web and internet-based applications that can run on desktop, server, mobile, and embedded systems. RakNet: A cross-platform, open-source C++ web engine for game developers. Tuf: An asynchronous web framework for C++ builds on top of Qt. WebSocket++: A websocket client/server library based on C++/Boost Aiso ZeroMQ: High-speed, modular asynchronous communication library Physics
Dynamics simulation engine Box2D: 2D game physics engine. Bullet: 3D game physics engine. Chipmunk: A library of fast, lightweight 2D game physics LiquidFun: 2D game physics engine ODE: Open Dynamics Engine - Open Source, High-Performance Library, Simulating Rigid Body Dynamics. ofxBox2d: Box2D open source framework wrapper. Simbody: High-performance C++ multibody dynamics/physics library that simulates joint biomechanics and mechanical systems like vehicles, robots, and human skeletons. Robotics
MOOS-IvP: A set of open-source C++ modules that provide autonomy for robotic platforms, especially autonomous marine vehicles. MRPT: Mobile Robot Programming Toolkit PCL: The Point Cloud Library is an independent, large-scale open project for 2D/3D imagery and point cloud processing. Robotics Library (RL): A standalone C++ library that includes robot dynamics, motion planning, and control. RobWork: A collection of C++ libraries for simulation and control of robotic systems. ROS: Robot operating system that provides libraries and tools to help software developers create robot applications. Scientific calculations
FFTW: A C language library that uses one-dimensional or multi-dimensional DFT calculations. GSL: GNU Science Library. Script
ChaiScript: An easy-to-use embedded scripting language for C++. Lua: A small and fast scripting engine for configuration files and basic application scripts. luacxx: C++ 11 API for creating Lua bindings SWIG: A wrapper/interface generator that allows you to link your C++ code to JavaScript, Perl, PHP, Python, Tcl, and Ruby V7: Embedded JavaScript engine. V8: Google's fast JavaScript engine that can be embedded in any C++ application. Serialization
Cap'n Proto: Fast Data Exchange Format and RPC System. cereal: C++11 serialization library FlatBuffers: A memory-efficient serialization library MessagePack: An efficient binary serialization library for C/C++, such as JSON protobuf: Protocol buffering, Google's data exchange format. protobuf-c: A protocol buffering implementation of C SimpleBinaryEncoding: Encoding and decoding of application information in binary format for low-latency applications. Thrift: Efficient cross-language IPC/RPC for C++, Java, Python, PHP, C# and many other languages, originally developed by Twitter. Video
libvpx: VP8/VP9 encoding and decoding SDK FFmpeg: A complete, cross-platform solution for recording, converting video and audio streams. libde265: An implementation of the open H.265 video codec. OpenH264: Open-source H.364 codec. Theora: Free and open-source video compression format. Virtual machines
CarpVM: An interesting VM in C, let's take a look at this together. MicroPython: Designed to implement Python 3.x on a microcontroller TinyVM: A small, fast, lightweight virtual machine written in pure ANSI C. Web application framework
Civetweb: Offers an easy-to-use, powerful, C/C++ embedded web server with optional CGI, SSL, and Lua support. CppCMS : Free and high-performance web development framework (not CMS). Crow: A C++ microweb framework (inspired by Python Flask) Kore: Ultra-fast and flexible web server/framework for web applications developed in C. libOnion: A lightweight library that helps you create web servers using the C programming language. QDjango: A web framework written in C++ based on the Qt library, trying to emulate the Django API, hence the name. Wt: A C++ library for developing web applications. XML
XML is garbage, XML parsing is annoying, and it is also a disaster for computers. There is no reason for this terrible thing to exist at all. ——Linus Torvalds Exbat: An xml parsing library written in C Libxml2: Gnome's xml C parser and toolkit libxml++: C++'s xml parser PugiXML: A lightweight, simple and fast XML parser for C++ that supports XPath. RapidXml: Attempts to create the fastest XML parser while maintaining ease of use, portability, and reasonable W3C compatibility. TinyXML: A simple and small C++XML parser that can be easily integrated into other projects. TinyXML2: A simple and fast C++CML parser that can be easily integrated into other projects. TinyXML++: A brand new interface for TinyXML that uses many of the many advantages of C++, templates, exceptions, and better exception handling. Xerces-C++: An XML-validated parser written in a subset of portable C++. Multiple mixed
Some useful libraries or tools, but they don't fit into the categories above, or they don't have categories yet. C++ Format: A small, secure, and fast-format library for C++ casacore: A series of C++ core libraries derived from aips++ cxx-prettyprint: Print library for C++ containers DynaPDF: An easy-to-use PDF generation library gcc-poison: A simple header file that helps developers ban insecure C/C++ functions in their applications. googlemock: A library for writing and using C++ mock classes HTTP Parser: C's http request/response parser libcpuid: A small C library for feature extraction of x86 CPU detection boxes libevil: license manager libusb: Allows mobile access to the universal USB library of USB devices PCRE: Regular Expression C library, inspired by the functionality of regular expressions in Perl. Remote Call Framework: C++'s inter-process communication framework. Scintilla: Open source code editing control Serial Communication Library: A cross-platform, serial library written in C++ language. SDS:C's simple dynamic string library SLDR: Ultra-light DNS resolver SLRE: Ultralight regular expression library Stage: Mobile robot simulator VarTypes: C++/Qt4 feature-rich, object-oriented framework for managing variables. ZBar: 'Barcode Scanner' library that scans barcodes in photo, picture and video streams and returns results. CppVerbalExpressions: Easy-to-use C++ regular expressions QtVerbalExpressions: A Qt library based on the C++ VerbalExpressions library PHP-CPP: A library that uses C++ to build PHP extensions Better String: Another string library for C, more feature-rich, but without buffer overflow issues, and also includes a C++ wrapper. Software
Software used to create a development environment Compiler
Clang: Developed by Apple GCC: GNU Compiler Collection Intel C++ Compiler : Developed by Intel Corporation LLVM: A collection of modular and reusable compiler and toolchain technologies Microsoft Visual C++ : MSVC, developed by Microsoft Corporation Open WatCom: Watcom, C, C++, and Fortran cross-compilers and tools TCC: Lightweight C compiler Online compiler
Codepad: Online compiler/interpreter, a simple collaboration tool CodeTwist: A simple online compiler/interpreter that allows you to paste C, C++ or Java code, execute it online and see the results coliru: Online compiler/shell, supports various C++ compilers Compiler Explorer: An interactive compiler that can perform assembly outputs CompileOnline: Compiling and executing C++ programs online on Linux Ideone: An online compiler and debugging tool that allows you to compile and execute source code online, supporting over 60 programming languages. Debugger
Comparison of debuggers: List of debuggers from Wikipedia GDB: GNU debugger Valgrind: Memory debugging, memory leak detection, performance analysis tools. Integrated Development Environment (IDE)
AppCode: Build an integrated development environment for Objective-C, C, C++, Java, and Java development on JetBrains' IntelliJ IDEA platform CLion: A cross-platform integrated development environment for C/C++ from JetBrains
Code::Blocks :免费C,C++和Fortran的集成开发环境 CodeLite: Another free C/C++ integrated development environment across platforms Dev-C++: A portable C/C++/C++11 integrated development environment Eclipse CDT: A full-featured C and C++ integrated development environment based on the Eclipse platform Geany: Lightweight fast, cross-platform integrated development environment. IBM VisualAge: An integrated development environment for home computers from IBM. Irony-mode: C/C++ micromode for Emacs powered by libclang KDevelop: Free and open source integrated development environment Microsoft Visual Studio: An integrated development environment from Microsoft NetBeans: An integrated development environment primarily used for Java development, but also supports other languages, especially PHP, C/C++, and HTML5. Qt Creator: A cross-platform C++, Javascript, and QML integrated development environment that is also part of the Qt SDK. rtags: C/C++ client-server index for integration with clang-based emacs Xcode: Developed by Apple YouCompleteMe: An engine for Vim that quickly fuzzes search and completes code based on the code you type. Build the system
Bear: A tool used to generate a compiled database for the clang tool Biicode: A simple file-based dependency manager. CMake: Cross-platform, free and open-source software used to manage the process of building software using an independently compiled approach. CPM: C++ package manager based on CMake and Git FASTBuild: A high-performance, open-source build system that supports highly scalable compilation, buffering, and network distribution. Ninja: A small build system focused on speed Scons: A software build tool configured using Python scipt Tundra: A high-performance code build system that provides the best incremental build times even for very large software projects. tup: A file-based build system used to monitor changing files in the background. Static code analysis
Cppcheck: Static C/C++ code analysis tool include-what-you-use: A tool for code analysis using clang that can be #included in C and C++ files. OCLint: Static source code analysis tool for C, C++, and Objective-C to improve quality and reduce defects. Clang Static Analyzer: A source code analysis tool for finding C, C++, and Objective-C program bugs List of tools for static code analysis: A list of static code analysis tools from Wikipedia
|