Author image

DLL & Linking Tutorial


A DLL (.dll) or dynamic link library (or shared library for *nix connoisseurs - .so for Linux and .dylib for MAC) is a library containing code and data that can be used by multiple programs at the same time. Dlls reduce the size of the executable and the memory usage of the operating system in general, since all applications just need to refer to a single place in memory to use a function in the library (instead of each application having its own copy of it).

Dlls help with separating concerns and reasoning about your code. It also serves for separate compilation, if we change the dll then we need to compile only the dll; the application code remains unaffected and unaware of the change (in this context it resembles the PIMPL idiom). It's worth noting that dll's are a little slower compared to static libraries (which are included in the executable/process), but that speed...

Author image

Template Metaprogramming Library


How I delved deep into Template Metaprogramming territory? Well after a few years experience with C++ I watched Walter E. Brown's excellent 2 part template metaprogramming CppCon conferences, titled “Modern Template Metaprogramming: A Compendium”.

There are many comments in the code and you can use it to learn. I have it all in a single file (yeah; not much software engineering work here).

This tiny library is the fruit of my labor.

I used Windows 8.1 x86_64, Visual Studio 2017, C++17 to build the project. It should work on other platforms as well.

Github

Github repository link.

Acknowledgements

Walter E. Brown video1
Walter E. Brown

1