【问题标题】:Multiple Dll's calling each others functions though "main" dll多个 Dll 通过“主”dll 互相调用函数
【发布时间】:2011-06-21 20:40:53
【问题描述】:

我正在构建一个游戏引擎(在 c++ 中),它被分成多个项目(在 windows 和 linux 中编译为单独的 dll 和 libs 和共享对象)结构如下:

                                    Main.exe

                                   Engine.dll

          Graphics Engine.dll Physics Engine.dll Sound Engine.dll ...dll

Main.exe 初始化一个新引擎,然后引擎创建图形、物理和声音引擎。这一切都很好,但是我现在希望图形引擎运行声音引擎中存在的函数,而不是直接通过 Engine.dll 中的函数运行。

但是有一个问题。主要包括引擎,引擎包括图形、物理和声音。如果我现在告诉图形、物理和声音包括引擎,并将引擎对象的引用传递给每个相应的“子引擎”,那么循环依赖就会出现问题......

如何让图形、物理和声音引擎与主引擎通信(因为目前它只是主引擎调用子引擎所有功能的单向关系)?

【问题讨论】:

    标签: c++ dll object libraries circular-dependency


    【解决方案1】:

    您可以使用来自Engine.dll 的抽象类(即纯虚函数)公开接口。然后在Engine.dll中实现这个接口。然后创建具体此类的实例并将此实例的引用/指针(作为抽象类引用/指针)传递给GraphicsEngine.dll。现在,只要 GraphicsEngine 需要与 Engine 通信,它就可以使用这个实例。由于您只使用抽象类,因此不需要将GraphicsEngine.dll 链接到Engine.dll。所以不会有循环依赖。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-21
      • 2015-08-02
      • 1970-01-01
      • 2022-11-09
      • 1970-01-01
      相关资源
      最近更新 更多