In addition: Add asserts and checks to better validate the inputs. Add documentation describing design patterns behind differet types of call.
While dynamic linking works on linux & Mac OS due to rpath support Windows can't find the dll when debugging the test case unless it's copied into the tests builddir or it has it's working dir set to the DLL's builddir.