There was always a problem with C++ as its standard library is very limited. For example whenever application you develop is going to use a graphic user interfejs or automatic memory management or network or multithreading or portable and sophisticated filesystem and dates support, you have to choose a third-party library.
This choise is very important – it’s like an investition. You bind to a code created by someone else, you change your project to fit to the choosen library. There is a cost: the work you do to make it work together. And there is a risk: if the library fails in a some way, your project fails. Switching to an alternative library can cost much. Like a bad investition.
Here I list of open-source portable C++ libraries I have used and I consider proven and best. By “portable” I mean a library which allows to be build and used under Linux and Windows.
- Boost: In fact it’s a collection of libraries that are likely to be included to C++ standard library some day. Most useful for me are:
- Smart Ptr – mandatory! – smart pointer class templates.
- Serialization – overbloated (its stack-traces has often over 40 levels of calls), but unfortunately there is no alternative for serialization problem for C++
- Thread – portable C++ multi-threading
- Filesystem – portable facilities to query and manipulate paths, files, and directories
- Iostreams – a framework for defining streams, stream buffers and i/o filters cooperating with standard iostream framework
- Integer – type definitions for integers of given size, for example: uint16_t.
- wxWidgets: crossplatform library for GUI and other services (networking, threading, files, etc.), free for commercial usage too
- Qt: alternative to the above, commercial usage requires a payment
- gSOAP: great library for interoperable RPC based on web-services, proved to communicate with Java web-services implementation
- Newmat: simple but useful library for matrix operation. I choose it after a long comparision of other alternatives and used some years ago in my master thesis project