12 top-notch libraries for C++ programming

C++ developers look to these libraries for help building Windows apps, mobile apps, machine learning and scientific apps, and more.

thumbs up happy employees binary diversity motivated staff happy people by peopleimages getty
PeopleImages / Getty Images

C++ is a general-purpose systems programming language that is now more than 40 years old, having been designed in 1979. Far from losing steam, C++ still ranks near the top of multiple programming language popularity indexes.

Smoothing the path to C++ usage is broad support for the language among the makers of IDEs, editors, compilers, test frameworks, code quality, and other tools. Software developers also have at their disposal many excellent libraries to assist with building C++ applications. Here are 12 that C++ developers rely on. 

Active Template Library

From Microsoft, Active Template Library (ATL) is a set of C++ classes for building COM (Common Object Model) objects, with support for COM features such as dual interfaces, standard COM enumerator interfaces, connection points, and ActiveX controls. Available with the Visual Studio IDE, ATL can be used to build single-threaded objects, apartment-model objects, free-threaded model objects, or both free-threaded and apartment-model objects.

Asio C++ library

The Asio C++ library is used for network and low-level I/O programming, offering a consistent asynchronous model. Providing basic building blocks for concurrency, C++ networking, and other types of I/O, Asio has been used in applications ranging from smartphone apps and games to highly interactive websites and real-time transaction systems. Projects using Asio include the WebSocketPP library and the DDT3 remote debugger for the Lua language. Asio is available as free open source under the Boost Software License, and supported on Linux, Windows, MacOS, and FreeBSD.

Boost

Boost provides free, peer-reviewed portable C++ source libraries, accessible from boost.org, that work with the C++ standard library. Boost libraries are intended to be used across a spectrum of applications. Among the collection are libraries for JSON, math, multi-index, file system, and geometry. Boost works on most modern operating systems including Linux, Unix, and Windows. Linux and Unix distributions such as Debian, Fedora, and NetBSD already include pre-built Boost packages.

Cinder

Cinder is an open source library for “creative coding” in C++. Useful for applications such as audio, computational geometry, graphics, and video, Cinder supports platform-native windowing and event-handling, along with I/O abstraction, and has a built-in API for XML and JSON parsing. Designed around idiomatic C++ 11 features such as shared_ptr, the library ships with numerous samples. Cinder supports MacOS, iOS, Linux, Windows, and Windows UWP.

Eigen

Eigen is a C++ template library for linear algebra, including matrices, vectors, numerical solvers, and related algorithms. All matrix sizes are supported, from small, fixed matrices to arbitrarily large, dense matrices. Algorithms are selected for reliability. All standard numeric types are supported. For speed, Eigen features expression templates to intelligently remove temporaries and enable lazy evaluation. Freely available under the Mozilla Public License 2 and downloadable from the Eigen project page, Eigen has been fitted with an API described by proponents as expressive and clean and natural to C++ programmers. The test suite for Eigen has been run against many compilers to ensure reliability.

FloatX

FloatX, or Float eXtended, is a header-only library for low-precision, floating point type emulation. While natively compatible with C++ compilers, FloatX can be called by other languages such as Python or Fortran. Floating point types are extended beyond the native single and double precision types. Template types are provided that allow the user to select the number of bits used for the exponent as well as significant parts of the floating point number. FloatX is based on the idea of the FlexFloat library for emulating reduced-precision floating types, but implements a superset of FlexFloat functionality in C and provides C++ wrappers. FloatX emerged from the Open Transprecision Computing initiative. It is available free under the Apache License 2.0. 

OpenCV

OpenCV, or Open Source Computer Vision Library, is a computer vision and machine learning library written natively in C++, and available under an Apache 2 license. OpenCV was built to provide common infrastructure for computer vision applications and accelerate the use of machine perception in commercial products. More than 2,500 optimized algorithms for face recognition, object detection, object classification, 3D model extraction, image search, and much more, OpenCV has amassed a user community of more than 47,000 persons. Available from the OpenCV project website, the library provides C++, Java, Python, and Matlab interfaces and supports Windows, Linux, Android, and MacOS. CUDA and OpenCL interfaces are in development.

Poco C++ Libraries

Intended to simplify C++ development, the Poco (Portable Components) C++ Libraries are cross-platform C++ libraries for building Internet and network applications to run on systems ranging from desktops and servers to mobile and IoT devices. The libraries also can be used to build microservices with REST APIs for machine learning or data analytics. The Poco libraries are similar in concept to the Java Class Library, Microsoft’s .NET Framework, or Apple Cocoa.

Developers can use Poco libraries to build application servers in C++ that talk to SQL databases, Redis, or MongoDB, or to build software for IoT devices that talk to cloud back-ends. Among the features of the libraries are a cache framework, HTML form handling, an FTP client for transferring files, and an HTTP server and client. The Poco libraries are available free under the Boost Software License and downloadable from GitHub

Velox

Velox is an embeddable, vectorized execution library for OLAP systems. The library is intended to optimize data processing systems and query engines. The project was begun as an internal engineering project at Facebook in 2020 and then open sourced. In common usage scenarios, Velox takes a fully optimized query plan as input and performs the described computation. Components include a high-level typing system, a columnar memory module, function packages, and network serializers. Velox is available on GitHub in the Facebook Incubator repo.

Windows Template Library

Originally from Microsoft, the Windows Template Library (WTL) is (since 2004) an open source library for building lightweight Windows applications and UI components. Positioned as an alternative to the Microsoft Foundation Classes toolkit, WTL extends ATL and provides a set of classes for controls, dialogs, frame windows, and GDI objects.

Wt

Wt is a web GUI library in modern C++ that allows developers to build interactive web UIs with widgets, without having to write JavaScript. A server-side solution, Wt does request handling and page rendering, providing built-in security, PDF rendering, a 2D and 3D painting system, an object-relational mapping library, a charting library, and an authentication framework. The core library is open source, providing a hybrid single-page framework that can be deployed on Linux, Unix, or Windows.

Developed by software engineering company Emweb, Wt is compatible with HTML5 and HTML4 browsers as well as with plain HTML user agents. And Wt can integrate with third-party JavaScript libraries. With Wt, an application is defined as a hierarchy of widgets—ranging from generic widgets such as push buttons to specialized widgets such as an entire blog widget. The widget tree is rendered as HTML/JavaScript in the browser. Wt can be downloaded from the project webpage. Both open source and commercial usage terms are available. 

Yocto/GL

Yocto/GL is a collection of small C++17 libraries for building physically-based graphics algorithms. It is written in a data-oriented style for ease of development, and split into small libraries to make code navigation easier. Data is stored in simple structs and accessed with free functions or directly.

Yocto/GL includes code from the PCG random number generator, boost hash_combine, and external libraries from the public domain or that are included with their own licenses. The developers of Yocto/GL prefer a functional approach rather than an object-oriented one, favoring free functions to class methods. Functions and data are defined in sibling namespaces contained in the yocto namespace.

Yocto/GL is released under the MIT license and available from GitHub. A C++17 compiler is required.

Copyright © 2022 IDG Communications, Inc.