- 01
 - 02
 - 03
 - 04
 - 05
 - 06
 - 07
 - 08
 - 09
 - 10
 - 11
 - 12
 - 13
 - 14
 - 15
 - 16
 - 17
 - 18
 - 19
 - 20
 - 21
 - 22
 - 23
 - 24
 - 25
 - 26
 - 27
 - 28
 - 29
 - 30
 - 31
 - 32
 - 33
 - 34
 - 35
 - 36
 - 37
 - 38
 - 39
 - 40
 - 41
 - 42
 - 43
 - 44
 - 45
 
                        class DllContainer
{
  DllContainer()
  {
    // тут грузятся дллки в количестве N.
    // LoadLibrary() + некоторые операции
  }
  
  ~DllContainer()
  {
    // FreeLibrary() и т.п.
  }
  template <class T>
  T* GetComponent(ComponentID id)
  {
    // аналог QueryInterface.
    // ищет компонент, проверяет можно ли статик_кастить
    // и вертает указатель нужного типа
  }  
};
class ComponentUser
{
  void Method1()
  {
    DllContainer loader;
    SomethingDoer* comp = loader.GetComponent<SomethingDoer>(ID1);
    comp->DoSomething();
  }
  
  void Method2()
  {
    DllContainer loader;
    SomethingElseDoer* comp = loader.GetComponent<SomethingElseDoer>(ID2);
    comp->DoSomethingElse();
  }
  
  void MethodN()
  {
    DllContainer loader;
    ShitPerformer* comp = loader.GetComponent<ShitPerformer>(IDN);
    comp->PerformSomeShit();
  }
};
                                     
        
            недавно обнаружил код примерно такого плана. 
крупный коммерческий проект...