What modern C++ libraries should be in my toolbox?
C++C++ Problem Overview
I've been out of the C++ game for about 10 years and I want to get back in and start on a commercial app. What libraries are in use these days?
- User interface (e.g, wxWidgets, Qt)
- Database
- General purpose (e.g. Boost, Loki, STL)
- Threading
- Testing
- Network/sockets
I looking to be cross-platform compatible (as much as possible out-of-the-box).
What libraries to do you rely on? What features do they provide that make them "indispensable"?
See my answer below for a summary.
C++ Solutions
Solution 1 - C++
Cross-platform libraries that are free for commercial (or non-commercial) applications
Feel free to expand this list
- General Purpose
- Audio
- Database
- Design
- IoC Frameworks
- Documents
- Graphics
- GUI
- Hashing
- Imaging
- Logging
- Mocking
- Google Mock
- Hippo Mocks
- Turtle (C++ mock object library for Boost)
- Multimedia
- Networking
- Testing
- Threading
- Version Control
- Web Application Framework
- XML
Links to additional lists of open source C++ libraries:
Solution 2 - C++
Sorry for repeating some of the stuff already written, but:
- UI: Qt
- Database: SOCI
- General purpose: Boost, Loki, STLSoft Libraries, ASL
- Threading: Boost.Thread
- Testing: Boost.Test
- Build tools: Boost.Build, SCons
(Should at least get you started)
Solution 3 - C++
On Windows...
ATL for COM development WTL for user interface
Solution 4 - C++
CGAL is an excellent c++ library for computational geometry
Solution 5 - C++
http://loki-lib.sourceforge.net/ might also be good addition.
It's another template library, which introduces typelists, and implementations for various design patterns.
I never used it, but I read Alexandrescu's book to get a better understanding of templates.
Solution 6 - C++
CppUnit for unit testing and test driven development
Solution 7 - C++
Besides all the great libraries already listed, I find the combination of xerces for XML (including XSD validation) and xalan for XSLT to be useful (xalan is built on top of xerces). AFAIK neither QT or POCO have XSLT functionality (unless it's been added since I last used them).