I think you can expose classes and methods via a DLL. Poco for example does it. But, at least for code compiled with Visual Studio, it comes with a drawback: The exported classes can only be linked with other modules that use the same specific compiler version and compiler settings. For Poco it works by downloading the source, building the dlls and then using them with exactly the same compiler and settings. So in case of Ultra AppKit this might not be a good choice as the consumers of the dll would need to use said settings and the same version of Visual Studio.
I understand that it's already a lot to keep track of. I didn't think of that before, and assumed it would not be a great deal.
The difference between MD and MT is the runtime they use. MT uses a static runtime version, MD links dynamically to the msvcrXYZ.dll, xyz being the version number. Info taken from here: https://docs.microsoft.com/en-us/cpp/build/reference/md-mt-ld-use-run-time-library?view=msvc-160
So my guess is that all the other libs you use also are set to /MT now, else they would probably not work. Which means in case you would consider changing to /MD, you would indeed have to change the whole chain. Would it be possible to check one of the lib's project settings to make sure if you have time for that?
I will try and compile Poco as static libs and see how that goes for now. I'll post an update later.