The Library
Help/Info
Current Release









Last Modified:
Nov 10, 2008

dlib C++ library



Welcome to the dlib C++ library documentation. It is a modern C++ library with a focus on portability and program correctness. It strives to be easy to use right and hard to use wrong. Thus, it comes with extensive documentation and thorough debugging modes.

The library is open source software and is licensed under the Boost Software License. The introduction contains everything you need to know to get started using the library. However, if you have any questions, comments, or complaints feel free to email me.

For updates to this project check its sourceforge page at http://dclib.sourceforge.net.


Major Features

  • Documentation
    • Unlike a lot of open source projects, this one provides complete and precise documentation for every class and function. There are also debugging modes that check the documented preconditions for functions. When this is enabled it will catch the vast majority of bugs caused by calling functions incorrectly or using objects in an incorrect manner.
    • Lots of example programs are provided
    • I consider the documentation to be the most important part of the library. So if you find anything that isn't documented, isn't clear, or has out of date documentation, tell me and I will fix it.
  • Portable Code
    • All non ISO C++ code is isolated inside the OS abstraction layers which are kept as small as possible. The rest of the library is either layered on top of the OS abstraction layers or is pure ISO C++.
    • Big/little endian agnostic
    • No other packages are required to use the library. Only APIs that are provided by an out of the box OS are used.
    • The library is tested regularly on win32, Linux, and Mac OS X systems. However, it should work on any POSIX system and has been tested on Solaris, HPUX, and the BSDs.
  • Threading
  • Networking
    • The library provides a portable and simple TCP sockets API
    • An object to help you make TCP based servers
    • A streambuf object that enables TCP sockets to interoperate with the C++ iostreams library
    • A simple HTTP server object you can use to embed a web server into your applications
  • Graphical User Interfaces
    • The library provides a portable and simple core GUI API
    • Implemented on top of the core GUI API are numerous widgets
    • Unlike many other GUI toolkits, the entire dlib GUI toolkit is threadsafe
  • Numerical Algorithms
  • Machine Learning Algorithms
  • Image Processing
    • Windows BMP read and write support
    • Automatic color space conversion between various pixel types
    • Common image operations such as edge finding and morphological operations
  • Data Compression and Integrity Algorithms
    • A CRC 32 object
    • MD5 functions
    • Various abstracted objects representing parts of data compression algorithms. Many forms of the PPM algorithm are included.
  • Testing
  • General Utilities