C++ 多Dll';尽管如此,我们还是互相调用函数;“主要”;动态链接库
我正在构建一个游戏引擎(用c++编写),它被分成多个项目(在windows上编译以分离dll和LIB,在linux中编译以分离共享对象)。结构如下:C++ 多Dll';尽管如此,我们还是互相调用函数;“主要”;动态链接库,c++,dll,object,libraries,circular-dependency,C++,Dll,Object,Libraries,Circular Dependency,我正在构建一个游戏引擎(用c++编写),它被分成多个项目(在windows上编译以分离dll和LIB,在linux中编译以分离共享对象)。结构如下: Main.exe Engine.dll Graphics Engine.dll Physics Engine.dll Sound Engine.dll ...dll Main.exe
Main.exe
Engine.dll
Graphics Engine.dll Physics Engine.dll Sound Engine.dll ...dll
Main.exe初始化一个新引擎,然后引擎创建图形、物理和声音引擎。这一切都很好,但我现在希望,例如,图形引擎运行声音引擎中的函数,但不是直接通过engine.dll中的函数
然而,有一个问题。主要包括引擎,引擎包括图形、物理和声音。如果我现在告诉图形、物理和声音包含引擎,并将引擎对象的引用传递给每个相应的“子引擎”,则循环依赖性存在问题
我如何让图形、物理和声音引擎与主机通信(因为目前只有单向关系,主机调用子引擎的所有功能) 您可以使用
Engine.dll
中的抽象类(即纯虚拟函数)公开接口。然后在引擎.dll
中实现此接口。然后创建该类的具体实例,并将该实例的引用/指针(作为抽象类引用/指针)传递给GraphicsEngine.dll
。现在,只要GraphicsEngine需要与引擎通信,它就可以使用此实例。由于您只使用抽象类,因此不需要将GraphicsEngine.dll
链接到Engine.dll
。因此,将不存在循环依赖