Menu
7 stellar libraries for C++ programming

7 stellar libraries for C++ programming

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

Credit: Jeremy Thomas

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 seven 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.

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 a BSD 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

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.

Join the CIO Australia group on LinkedIn. The group is open to CIOs, IT Directors, COOs, CTOs and senior IT managers.

Join the newsletter!

Or

Sign up to gain exclusive access to email subscriptions, event invitations, competitions, giveaways, and much more.

Membership is free, and your security and privacy remain protected. View our privacy policy before signing up.

Error: Please check your email address.

More about ApacheAppleATLClassGitHubLinuxMicrosoftMongoDBMozillaWTL

Show Comments
[]