Я никогда не видел решения всей проблемы, но я реализовал нечто подобное с помощью Qt плагинов.
Качественно выполненная часть Qt (которую сам C ++ не реализует) обрабатывает интерфейсы OO C ++ в динамически загружаемых модулях. Из-за нестабильности именования в C ++ обычно библиотеки DLL не имеют интерфейсов C ++, только интерфейсы C. Qt сделал это с помощью своей мета-объектной системы, и она сработала очень чисто для меня.