MODULE_NAME_API
UE 中的模块,如果定义的符号允许被外部模块访问,则需要在 class 前加 MODULE_NAME_API
,这个宏是什么意思呢?
打开 Definitions.MODULE_NAME.h
这个文件可以知道,MODULE_NAME_API
这个宏的定义是 DLLEXPORT
,看名字就知道是导出符号的,但是针对不同的平台是不一样的,DLLEXPORT
和DLLIMPORT
的宏是定义在 Runtime\Core\Public\${PLATFROM}\${PLATFROM}Platfrom.h
下的(Android 与 Linux 的相同):
1 | // Runtime\Core\Public\Android\AndroidPlatform.h |
MacOS 则是一个空的宏定义:
1 | // Runtime\Core\Public\Mac\MacPlatform.h |
Windows 的为__declspec
:
1 | // Runtime\Core\Public\Windows\WIndowsPlatform.h |
模块的宏定义
UE 中模块的宏定义会汇总在这个文件下:
1 | Intermediate\Build\Win64\UE4Editor\Development\NetExampleDemo\Definitions.MODULE_NAME.h |
其中定义了 MODULE_NAME_API
为DLLEXPORT
,导出自己模块内的符号,还有引用的其他模块的 MODULE_NAME_API
为DLLIMPORT
,导入引用模块内的符号,在编译时链接可用,还有一些宏开关。
类似于这样:Definations.WebBrowserEx.h