You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
22 lines
1.5 KiB
Plaintext
22 lines
1.5 KiB
Plaintext
Availability:Public
|
||
Title:模块API修饰符
|
||
Crumbs:%ROOT%, Programming
|
||
Description: 向他模块公开类及函数。
|
||
|
||
对这些修饰最简单的理解是它们为你的模块dll文件标记函数,类或者数据为可公开访问类型。如果您在Engine模块中标记一个函数为ENGINE_API,那么任何导入了Engine的模块都可以直接访问那个函数。
|
||
|
||
这些修饰符仅当以“模块”模式(桌面平台上的DLL文件)编译引擎时有用。和该模式相对应的是所谓的"整体"模式,它会将所有的代码一同放到一个单独的可执行文件中。这种类型的编译由UnrealBuildTool 和/或 平台及编译配置控制。
|
||
|
||
根据UnrealBuildTool编译代码的方式的不同,实际的API宏是以下内容之一:
|
||
|
||
* `__declspec( dllexport )`, 当以 "模块" 模式编译模块代码时。
|
||
* `__declspec( dllimport )`, 当包含您正在导入的模块的公有模块头文件时。
|
||
* 空, 当以"整体" 模式编译时。
|
||
|
||
|
||
API模块仅对从另一个模块中静态地导入的模块有意义。Core模块就是个很好的示例 -- 几乎UE4中的每个模块在其 *.Build.cs文件中都指定 "Core"作为导入依赖项。
|
||
|
||
很多模块是永远不需要静态地导入的(比如 "SceneOutliner" 模块)。我们将这些模块作为动态加载的模块进行引用。动态加载的模块是非常棒的,因为可以在启动时发现这些模块(就像是一个插件)且可以在运行时即时地重新加载它们。
|
||
|
||
API宏主要用于较旧的代码,以便使得较新的模块从旧代码的DLL文件中访问这些代码。在略新的一些代码中,就很少用API宏了,而是设置良好的接口层来在DLL之间相互公开功能。
|