它是什么SOMTEMPLATE_VR_API

What is it SOMTEMPLATE_VR_API?

本文关键字:API VR 它是什么 SOMTEMPLATE      更新时间:2023-10-16

我在虚幻引擎C VR实现中发现了这个宏。有人可以解释这个宏的目标吗?我什么时候应该使用此宏?为什么我在虚幻引擎来源找不到这个宏?

UCLASS()
class SOMTEMPLATE_VR_API className :

_api宏用于将类和功能暴露于其他模块。

来自文档:

思考这些说明符的最简单方法是将它们用于将功能,类或数据标记为模块DLL文件的公共。如果将引擎模块中的功能标记为Engine_api,则任何导入引擎的模块都可以直接访问该功能。

这些仅在模块化模式(桌面平台上的DLL文件(时才使用。相反的是我们所说的单片模式,该模式将所有代码放在一个可执行文件中。构建的类型由UnrealBuildTool设置和/或平台控制并构建配置。

实际的API宏等于以下一个,具体取决于UBT的代码如何编译:

  • __declspec( dllexport ),以模块化模式编译模块代码。

  • __declspec( dllimport ),包括您要导入的模块的公共模块标头。

  • 空,以整体模式编译

API宏仅对于从另一个模块导入的模块才有意义。核心模块是一个很好的例子 - UE4中的几乎所有其他模块都将核心指定为其 *.build.cs文件中的导入依赖项。

许多模块永远不需要静态导入(例如sceneoutliner模块。(我们将这些模块称为动态加载的模块。动态加载的模块很棒,因为可以在启动时发现它们(有点像插件(,并且通常可以随时重新加载。

API宏主要用于较旧的代码,以允许较新的模块从其DLL访问它。在较新的代码中,API宏的使用量要少得多,而是设置不错的接口层以在DLL边界上公开功能。