Можно. Для этого нужно написать обычную функцию типа:
extern "C" IPlugin * getPluginInterface()
{
return new Plugin();
}
Если код для винды нужно еще добавить __declspec (dllexport) после extern «C».
И все. Теперь можно загрузить библиотеку динамически и спросить адрес функции по имени с помощью dlsym( для Linux ), для винды не помню.