Files
UnrealEngineUWP/Engine/Documentation/Source/Programming/Modules/API/ModuleAPI.CHN.udn
Ben Marsh 49831a5631 Include documentation source in repository.
[CL 2489162 by Ben Marsh in Main branch]
2015-03-24 08:35:52 -04:00

22 lines
1.5 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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之间相互公开功能。