Как скомпилировать проект, если там используется объект еще не существующего класса (C++, пишу библиотеку)?
Чисто виртуальный базовый класс.
Во-первых, функции main в библиотеке быть не может, библиотека - просто расширение функционала для проекта в котором будет использоваться. Main - служит начальной точкой для исполняемых приложений, если сильно не извращаться, а следственно должна быть определена только в проекте, который собирается быть исполняемым.

Во-вторых, в чем проблема с MainScene? Вы просто создаете интерфейс базового класса, потом пользуетесь им получая указатель на объект его реализации, просто необходимо дать пользователю возможность отправить этот указатель вам через какую-либо функцию библиотеки.