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, I watched Walter E. Brown's excellent 2 part template metaprogramming CppCon conferences, titled “Modern Template Metaprogramming: A Compendium” and this tiny library/tutorial is the fruit of my labor.

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

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