What you describe about having modules that the DLL can call that are plugged in at runtime are exactly what DLLs are designed to do. In
olde times, all of the code was compiled and linked into a single application (EXE) with no configurability. DLLs--dynamic link libraries--were designed to allow you to decide at runtime to link to functions from different modules.
I suspect it would be technically possible to break out extra DLLs for the modules that you would link in at runtime, but a) I'm not sure a DLL can link to another DLL (probably can) without the EXE getting involved, and b) as Afforess said, most of the DLL mods have code that weaves in to far too many functions to be pluggable.
Now, this would be perfect for mods that just want to recode callbacks and events in C++ to make them faster. It wouldn't be too hard to make a system of callbacks that would first call a configured set of C++ callbacks before calling the Python one (or instead or optionally, whatever). When I say this I mean conceptually as the idea is already there in the code. Writing the actual code would
not be easy. It's code I've done in Python, but there it's a snap.
Unfortunately, I have zero knowledge of true Windows programming. I know many of the concepts like MFC and DLLs, but I have never used them myself. I would be quite hesitant to tackle a project of this difficulty and magnitude--given all the other things I'm juggling--knowing that I'd have to bumble through much of it, especially with the looming fear that I'd get 80% in only to find out that it is, in the end, technically impossible.
If someone can figure out how to have the DLL dynamically load other DLLs on-the-fly and wants to build this project, I'm happy to help out with technical design work and some coding. It sounds like a neat project, but I wonder how many modders will make use of it. I really don't see it expanding beyond porting callbacks from Python to C++, but then maybe I'm not seeing the big picture.
