Sometimes, it is hard to know "what's out there" for Standard C++. My goal here is very simply to collect high-quality
links to libraries, interviews, documents, you name it. It is not an attempt to be comprehensive or, frankly, even that organized-- there
are way too many excellent libraries out there to make that possible. Instead, I'm trying to find "the good and the handy", if that
makes sense. ;-P
If there's no link, try Google. I also have found it really useful to try searching for articles when I am
having difficulty figuring something out, and Google is of course a big help there, too.
If you would like to help me dig up the good stuff, please write me, my address is cpp at slither dot org. Please put "Jesse's C++ Collection" in the subject line.
If you don't know where to start, I would begin with Bjarne Stroustrup's homepage, the Boost site, or by reading a few articles.
You may be best off getting a good book, reading newsgroups, and basically communicating with real people who can help.
I will try to keep this more-or-less up to date, but frankly I just can't say how much time I will have for it (in a way, most projects like this are destined for failure because of that, eh?). In particular, keeping up with articles is pretty tough-- but, good luck (try Artima and Dr. Dobb's Journal)! Enjoy this powerful and expressive programming language.
ConceptGCC compiler ("...a derivative of the GNU C++ compiler that implements the ConceptC++ language..."). Give this a try if you want to play with some C++0x features today.i The newest GCC compilers also have experimental C++0x modes.
Anyway... I likely won't be able to keep this resource completely up to date, but I will at least give it a go-- hope
you find it useful!
Jesse Williamson
Audio Programming and Signal Processing: FAUST ("...a compiled language for real-time audio signal processing."-- targets C and C++) FFTW ("...a C subroutine library for computing the discrete Fourier transform (DFT) in one or more dimensions, of arbitrary input size, and of both real and complex data...") Sig++ ("...C++ classes and related example programs for computer music.") SPUC ("Signal processing using C++ - A DSP library") ("The objective of SPUC is to provide the Communications Systems Designer or DSP Algorithm designer with simple, efficient and reusable DSP building block objects.")
Text Processing and Parsing: Common Text Transformation Library ("...a set of C++ classes and functions to understand and modify text data")
C++ People:
(Please note: There are WAY too many people to list here. No bias is intended if anyone's not in this list (suggestions always welcome).) Alexandrescu, Andrei (Author of "C++ Coding Standards" and "Modern C++ Design", articles) Berris, Dean Michael has a handy C++ blog.
C++ Reference Guide Diggins, Christopher (contributer, "C++ Cookbook", author of Heron language, Unimperative language, and OOTL.
Kalev, Danny (member of the C++ standards committee between 1997 and 2000)
Stepanov, Alexander (creator of STL)
interview Stroustrup, Bjarne (Creator of C++, author of "The Design and Evolution of C++", and "The C++ Programming Language", many articles and interviews)
interviews Sutter, Herb (Chair of the ISO C++ standards committee, author of many books and papers)
Compiler Tools: GCC-XML ("XML output extension to GCC") ("The purpose of the GCC-XML extension is to generate an XML description of a C++ program from GCC's internal representation") OpenC++ ("...enables development of C++ language tools, extensions, domain specific compiler optimizations and runtime metaobject protocols.") Stratego/XT ("...a language and toolset for program transformation.") CodeBoost ("a tool for source-to-source transformation and optimisation of C++ programs.")
Constraint-Based Programming: Geocode ("an open, free, portable, accessible, and efficient environment for developing constraint-based systems and applications")
"Accessing Your Database with C++ Is as Easy as DTL OTL (Oracle Template Library) SOCI ("SOCI is a database access library for C++ that makes the illusion of embedding SQL queries in the regular C++ code, staying entirely within the Standard C++.") STLdb4 ("...a C++ wrapper for the sleepycat db4 database...")
Debugging Tools: ddd ("GNU DDD is a graphical front-end for command-line debuggers") gdb (A very powerful debugger.)
Debugging "C" And "C++" Programs Using "gdb" Zero is a flexible debugger for Linux applications written in C and C++. memprof ("MemProf is a tool for profiling memory usage and finding memory leaks.") Valgrind ("Valgrind is an award-winning suite of tools for debugging and profiling Linux program.")
Frameworks (application): Adobe Source Libraries (ASL) ("...a collection of C++ libraries building foundation technology to allow the construction of commercial applications by assembling generic algorithms through declarative descriptions.")
Frameworks (web and web applications): cppcms ("Free C++ Web Development Framework (not CMS) aimed for Rapid Web Application Development") Wt ("...a C++ library for developing Web applications with an API that is widget-centric and inspired by existing C++ graphical user interface APIs.") (Uses Ajax.) C++ Server Pages ("...modular, multithreaded, high performance webapplicationserver for C++") Codea ("Codea allows developers to quickly and easily develop modules in C++ for Apache 2.0") KLone ("...multiplatform, web application development framework, targeted especially for embedded systems and appliances.")
General Libraries: Boost ("...free peer-reviewed portable C++ source libraries. The emphasis is on libraries which work well with the C++ standard library.")
(Note: Boost libraries continue to evolve and new ones are constantly added. Check the Boost website for the latest information. Articles may be for old versions.)
Graphics, Image Processing, and Fonts: cairo ("...a 2D graphics library with support for multiple output devices...") cimg ("Cool Image") ("C++ Template Image Processing Library.") Crystal Space ("...a free cross-platform software development kit for realtime 3D graphics.") EasyBMP ("Cross-Platform Windows Bitmap Library") OpenGL ("The Industry's Foundation for High Performance Graphics") Ogre ("OGRE v1.0 [Azathoth] represents the culmination of 4 years of continuous development, resulting in what is now regarded by many as the leading open source real time 3D rendering engine.") Sh ("a library that acts as a language embedded in C++, allowing you to program GPUs (Graphics Processing Units) and CPUs for graphical and general-purpose computations in novel ways.") AGG Project ("High Fidelity 2D Graphics") Spiro ("...a toolkit for curve design, especially font design, created by Raph Levien.") Voreen ("...an open source volume rendering engine which allows interactive visualization of volumetric data sets...")
Document Processing: PoDoFo ("...a free, portable C++ library which includes classes to parse PDF files and modify their contents into memory...") Poppler ("...a PDF rendering library...") libHaru ("...a free, cross platform, open source library for generating PDF files")
GUI: C++/Tk ("A complete C++ interface to the Tk GUI toolkit") FLTK (Fast Light Toolkit / "...a cross-platform C++ GUI toolkit...") gtkmm ("...the official C++ interface for the popular GUI library GTK+") Qt ("...a cross-platform application and UI framework") WTL (Windows Template Library / "...library for developing Windows applications and UI components...")
article (Ruby embedded into C++ Tutorial, Guide, Howto)
Language & Linguistic Programming: libtextcat (A C library for categorizing languages.)
Logging and Reporting Libraries: Pantheios ("Open Source C/C++ Logging API library, offering an optimal combination of 100% type-safety, efficiency, genericity and extensibility.")
ASIO ("...a cross-platform C++ library for network and low-level I/O programming... using a modern C++ approach")
(See also Boost, which includes Boost.Asio.) libcurl (C library with many network protocols) Pion ("...a C++ development library for implementing lightweight HTTP interfaces.")
See also: libferris.
Geographic Libraries: GRASS (Geographic Resources Analysis Support System)
Declarative and Logic Programming: Castor Logic Progamming Paradigm for C++
Mathematics and General Scientific Libraries: Blitz++ ("Blitz++ is a C++ class library for scientific computing which provides performance on par with Fortran 77/90.") fftw (C Fast Fourier Transform library.) ePiX ("...creates mathematically accurate line figures, plots, and movies using easy-to-learn syntax") GNU mp (Arbitrary precision numbers C library.) Matrix Template Library POOMA ("POOMA (Parallel Object-Oriented Methods and Applications) is a collection of templated C++ classes for writing parallel PDE solvers using finite-difference and particle methods") Root ("An Object-Oriented Data Analysis Framework") IT++ ("...a C++ library of mathematical, signal processing, speech processing, and communications classes and functions") ITL Iterative Template Library ("Generic Components for High Performance Scientific Computing") IETL Iterative Eigensolver Template Library ("...provides generic high performance C++ library for iterative eigensolvers.") CGAL Computational Geometry Algorithms Library ("[provides] easy access to efficient and reliable geometric algorithms to users in industry and academia...") freesteam ("...an open source implementation of international-standard steam tables from the International Association for the Properties of Water and Steam (IAPWS)...")
Testing and Correctness: Mock Objects for C++ ("a platform independent generic unit testing framework for C++") UnitTest++ ("unit testing framework for C++ designed for simplicity and portability")
XML and Data Description Libraries and Tools: Apache Xerces C++ Apache Xalan C++ Arabica XML parser toolkit libXML2 (C library) xmlbeansxx ("xmlbeansxx is a C++ library easing the processing of XML data. It is very similar to and in fact was inspired by Apache XMLBeans")
The Manifesto of xmlbeansxx (" This document points out why it is worthy to use xmlbeans. We try to convince you that it is better than other C++ XML-handling libraries as well as far better than any Java solution.")
XSD ("CodeSynthesis XSD is an open-source, cross-platform W3C XML Schema to C++ data binding compiler.")
json-cpp ("...an implmentation of a [JSON] reader and writer in C++.")