Я создаю игровой движок (в C++), который разбит на несколько проектов (компилируя для разделения DLL и libs на окна и общие объекты в linux), структура как следует следующим образом:Несколько вызовов Dll друг друга, хотя «главная» dll
Main.exe
Engine.dll
Graphics Engine.dll Physics Engine.dll Sound Engine.dll ...dll
Main.exe инициализирует новый двигатель, а затем двигатель создает графические, физические и звуковые двигатели. Все это прекрасно работает, но теперь я хочу, например, графический движок запускать функции, присутствующие в звуковом движке, но не напрямую, используя функцию в Engine.dll.
Однако есть проблема. Основное включает Engine, а Engine включает в себя графику, физику и звук. Если я сейчас расскажу о графике, физике и звуке, чтобы включить Engine, а также передать ссылку на объект двигателя на каждый соответствующий «подмотор», возникает проблема с круговыми зависимостями ...
Как я могу получить Графика, Физика и звуковой движок для связи с Главным двигателем (так как на данный момент это только односторонняя связь, где главный двигатель вызывает все функции подмодулей)?