DLL и ООП в С++

Здравствуйте, comp.
С dll знаком плохо. Такой вопрос:
Необходимо реализовать ООП схему:
ClassMain -------> <|ClassA
InterfaceMy
<|ClassB
..............
Т.е. Имеется класс ClassMain.
Имеется интерфейс InterfaceMy. У него есть методы fu1() и fu2().
ClassA и ClassB (могут быть и другие) - любые, но реализуют интерфейс
InterfaceMy. При этом реализация ClassA и ClassB находяться в dll. Допустим,
так
же, что каждая dll имеет функцию CreateInstance(), которая просто
вызывает конструктор.
ClassMain использует интерфейс таким образом:
typedef InterfaceMy* (WINAPI *hCreate)();
InterfaceMy* i;
*hCreate CreateInstance = код взятия адреса функции CreateInstance
из необходимой dll;
i = (*CreateInstance());
i->fu1().
Вопросы:
1. Можно ли в принципе реализовать такую схему?
2. Как откомпилить два файла *.h и *.cpp с описанием класса в DLL, а
то в MSDN про это смутно как то?
3. Может есть другие варианты реализации таких plugin?
Можно просто ограничиться ссылками на соотв. литературу.
Заранее благодарен.