TL:DR; UE4中的静态/动态库和数据共享。
所以所有的库都是静态的或动态的,但没有"混合"溶液
详细说明:
我浏览UE4源代码,发现他们正在使用模块化系统。因此,他们构建库(静态或动态,基于IS_MONOLITHIC定义),并根据构建配置文件(如Core.Build.cs)进行链接。
让我们阅读" OpenGLDrv"模块的构建文件。它取决于核心和引擎(等等)库,所以我猜它们与OpenGLDrv库相关联。
检查Launch模块,在Build文件中,他们为D3DXX和OpenGLDrv库设置了动态模块依赖关系。
这就是我的问题:
更具体地说
我试图实施类似的系统。我正在使用visual studio,而我目前的目标平台仅限Windows(但我是以独立于平台的方式编写代码)。
目前我有以下5个模块:
这是我自己在Paint中绘制的非常酷的图像: The best design-image ever
如果所有4个库都是静态的,则依赖项没有任何问题。但是,这样OGLDevice不是动态加载的库,因为它链接到Engine。也许设备本身没有实例化,但仍然链接到项目。
如果Core,Modules和Engine库是静态的,但OGLDevice是动态的,则会出现数据共享问题。首先,核心是#34;加载"引擎(因为它与它静态链接)但是当引擎加载OGLDevice库时,它也会加载"它自己的核心。所以每个静态和全局都是重复的。
如果所有模块都是动态的,我想它应该可行。有没有办法混合静态和动态库的东西?
或者UE4如何做到这一点?