I started programming as a hobby a long time ago, but only a few years ago I started programming in C++. It has certain elements that make it very powerful , but also more difficult to learn (e.g. pointers). On this page I gathered relatively mature and good quality C++ libraries, most of them open source(LPGL or GPL) or free to use. Hopefully they help you with your next C++ project !
C++ GUI libraries
- Qt Cross-Platform Application Framework
This is a very good quality C++ library/framework to create cross platform software in C++. It offer also other interesting libraries, for example for networking(sockets), file access, SQL , OpenGL and more.
wxWidgets lets developers create applications for Win32, Mac OS X, GTK+, X11, Motif, WinCE, and more using one codebase. It can be used from languages such as C++, Python, Perl, and C#/.NET. Unlike other cross-platform toolkits, wxWidgets applications look and feel native.
C++ framework libraries
- POCO C++ libraries
The POCO C++ Libraries (POCO stands for POrtable COmponents) are open source C++ class libraries that simplify and accelerate the development of network-centric, portable applications in C++.
General C++ libraries(math, structure, containers, etc.)
- Boost C++ libraries
Boost provides free peer-reviewed portable C++ source libraries.The libraries serve many different purposes, for example linear algebra((matrix calculations) advanced math function, containers, templates, structures ,lists, queues, etc.
- Standard Template Library.
The Standard Template Library, or STL, is a C++ library of container classes, algorithms, and iterators; it provides many of the basic algorithms and data structures of computer science. The STL is a generic library, meaning that its components are heavily parameterized: almost every component in the STL is a template
C++ communication/protocols (HTTP/FTP etc.)
libcurl is a free and easy-to-use client-side URL transfer library, supporting FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS, FILE, IMAP, SMTP, POP3 and RTSP. libcurl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, cookies, user+password authentication (Basic, Digest, NTLM, Negotiate, Kerberos4), file transfer resume, http proxy tunneling and more!
Middleware C++ libraries (remote function call, ORB, etc.)
Remote Call Framework (RCF) is a portable C++ middleware framework using native C++ language features to avoid manual code generation.
omniORB is a robust high performance CORBA ORB for C++ and Python
C++ neural networks libraries
- Flood Flood is a comprehensive implementation of the multilayer perceptron neural network in the C++ programming language. It includes several objective functionals and training algorithms, as well as different utilities for the solution of a wide range of problems.
Math and equation solving C++ libraries
- GNU Scientific Library
The GNU Scientific Library (GSL) is a numerical library for C and C++ programmers. It is free software under the GNU General Public License.
- CGAL - Computational geometry algorithms library
The libMesh library provides a framework for the numerical simulation of partial differential equations using arbitrary unstructured discretizations on serial and parallel platforms. A major goal of the library is to provide support for adaptive mesh refinement (AMR) computations in parallel while allowing a research scientist to focus on the physics they are modeling.
The Getfem++ project focuses on the development of a generic and efficient C++ library for finite element methods. The goal is to provide a library allowing the computation of any elementary matrix (even for mixed finite element methods) on the largest class of methods and elements, and for arbitrary dimension (i.e. not only 2D and 3D problems).
C++ 3D graphics and physics
- OGRE 3D :: Open source graphics engine.
OGRE (Object-Oriented Graphics Rendering Engine) is a scene-oriented, flexible 3D engine written in C++ designed to make it easier and more intuitive for developers to produce applications utilizing hardware-accelerated 3D graphics. The class library abstracts all the details of using the underlying system libraries like Direct3D and OpenGL and provides an interface based on world objects and other intuitive classes.
- Irrlicht engine
The Irrlicht Engine is an open source high performance realtime 3D engine written and usable in C++ and also available for .NET languages. It is completely cross-platform, using D3D, OpenGL and its own software renderer, and has all of the state-of-the-art features which can be found in commercial 3d engines.
- G3D engine
G3D is a commercial-grade C++ 3D engine available as Open Source (BSD License). It is used in commercial games, research papers, military simulators, and university courses. G3D supports real-time rendering, off-line rendering like ray tracing, and general purpose computation on GPUs.
Mesa is an open-source implementation of the OpenGL specification - a system for rendering interactive 3D graphics.
ODE is an open source, high performance library for simulating rigid body dynamics. It is fully featured, stable, mature and platform independent with an easy to use C/C++ API. It has advanced joint types and integrated collision detection with friction.
Open source gaming and simulation engine.
C++ Peer to peer
libjingle is a collection of open-source C++ code and sample applications that enables you to build a peer-to-peer application. The code handles creating a network connection (through NAT and firewall devices, relay servers, and proxies), negotiating session details (codecs, formats, etc.), and exchanging data. It also provides helper tasks such as parsing XML, and handling network proxies.