载入中...
搜索中...
未找到
Export.h
浏览该文件的文档.
1#pragma once
2
15#if defined(EVENGINE_ENGINE_EXPORTS) && defined(_WIN32)
16#define EVENGINE_API __declspec(dllexport)
17#elif defined(EVENGINE_MODULE_DLL) && defined(_WIN32)
18#define EVENGINE_API __declspec(dllimport)
19#elif defined(EVENGINE_PLUGIN)
20# if defined(_WIN32)
21# define EVENGINE_API __declspec(dllimport)
22# else
23# define EVENGINE_API
24# endif
25#elif defined(_WIN32)
26# define EVENGINE_API __declspec(dllexport)
27#else
28# if defined(__GNUC__) || defined(__clang__)
29# define EVENGINE_API __attribute__((visibility("default")))
30# else
31# define EVENGINE_API
32# endif
33#endif
34
56#if defined(EVENGINE_MODULE_DLL) || defined(EVENGINE_PLUGIN)
57#if defined(_WIN32)
58#define EVENGINE_GROUP_EXPORT __declspec(dllexport)
59#define EVENGINE_GROUP_IMPORT __declspec(dllimport)
60#elif defined(__GNUC__) || defined(__clang__)
61// ELF/Mach-O 没有 dllimport:两侧都用默认可见性,符号由真正拥有它的那个组导出。
62#define EVENGINE_GROUP_EXPORT __attribute__((visibility("default")))
63#define EVENGINE_GROUP_IMPORT __attribute__((visibility("default")))
64#else
65#define EVENGINE_GROUP_EXPORT
66#define EVENGINE_GROUP_IMPORT
67#endif
68
69#if defined(EVENGINE_EXPORTS_FOUNDATION)
70#define EVENGINE_API_FOUNDATION EVENGINE_GROUP_EXPORT
71#else
72#define EVENGINE_API_FOUNDATION EVENGINE_GROUP_IMPORT
73#endif
74#if defined(EVENGINE_EXPORTS_PLATFORM)
75#define EVENGINE_API_PLATFORM EVENGINE_GROUP_EXPORT
76#else
77#define EVENGINE_API_PLATFORM EVENGINE_GROUP_IMPORT
78#endif
79#if defined(EVENGINE_EXPORTS_BACKENDS)
80#define EVENGINE_API_BACKENDS EVENGINE_GROUP_EXPORT
81#else
82#define EVENGINE_API_BACKENDS EVENGINE_GROUP_IMPORT
83#endif
84#if defined(EVENGINE_EXPORTS_WORLD)
85#define EVENGINE_API_WORLD EVENGINE_GROUP_EXPORT
86#else
87#define EVENGINE_API_WORLD EVENGINE_GROUP_IMPORT
88#endif
89#if defined(EVENGINE_EXPORTS_DOMAINS)
90#define EVENGINE_API_DOMAINS EVENGINE_GROUP_EXPORT
91#else
92#define EVENGINE_API_DOMAINS EVENGINE_GROUP_IMPORT
93#endif
94#if defined(EVENGINE_EXPORTS_ORCHESTRATION)
95#define EVENGINE_API_ORCHESTRATION EVENGINE_GROUP_EXPORT
96#else
97#define EVENGINE_API_ORCHESTRATION EVENGINE_GROUP_IMPORT
98#endif
99#if defined(EVENGINE_EXPORTS_EDITORS)
100#define EVENGINE_API_EDITORS EVENGINE_GROUP_EXPORT
101#else
102#define EVENGINE_API_EDITORS EVENGINE_GROUP_IMPORT
103#endif
104#else
105// OBJECT / 静态模式:不分区,每个组宏都与原来的 EVENGINE_API 完全一致。
106#define EVENGINE_API_FOUNDATION EVENGINE_API
107#define EVENGINE_API_PLATFORM EVENGINE_API
108#define EVENGINE_API_BACKENDS EVENGINE_API
109#define EVENGINE_API_WORLD EVENGINE_API
110#define EVENGINE_API_DOMAINS EVENGINE_API
111#define EVENGINE_API_ORCHESTRATION EVENGINE_API
112#define EVENGINE_API_EDITORS EVENGINE_API
113#endif
114
133#if defined(EVENGINE_MODULE_DLL) || defined(EVENGINE_PLUGIN)
134#if defined(EVENGINE_EXPORTS_FOUNDATION)
135#define EVENGINE_API_FOUNDATION_INLINE EVENGINE_GROUP_EXPORT
136#else
137#define EVENGINE_API_FOUNDATION_INLINE
138#endif
139#if defined(EVENGINE_EXPORTS_PLATFORM)
140#define EVENGINE_API_PLATFORM_INLINE EVENGINE_GROUP_EXPORT
141#else
142#define EVENGINE_API_PLATFORM_INLINE
143#endif
144#if defined(EVENGINE_EXPORTS_BACKENDS)
145#define EVENGINE_API_BACKENDS_INLINE EVENGINE_GROUP_EXPORT
146#else
147#define EVENGINE_API_BACKENDS_INLINE
148#endif
149#if defined(EVENGINE_EXPORTS_WORLD)
150#define EVENGINE_API_WORLD_INLINE EVENGINE_GROUP_EXPORT
151#else
152#define EVENGINE_API_WORLD_INLINE
153#endif
154#if defined(EVENGINE_EXPORTS_DOMAINS)
155#define EVENGINE_API_DOMAINS_INLINE EVENGINE_GROUP_EXPORT
156#else
157#define EVENGINE_API_DOMAINS_INLINE
158#endif
159#if defined(EVENGINE_EXPORTS_ORCHESTRATION)
160#define EVENGINE_API_ORCHESTRATION_INLINE EVENGINE_GROUP_EXPORT
161#else
162#define EVENGINE_API_ORCHESTRATION_INLINE
163#endif
164#if defined(EVENGINE_EXPORTS_EDITORS)
165#define EVENGINE_API_EDITORS_INLINE EVENGINE_GROUP_EXPORT
166#else
167#define EVENGINE_API_EDITORS_INLINE
168#endif
169#else
170#define EVENGINE_API_FOUNDATION_INLINE EVENGINE_API
171#define EVENGINE_API_PLATFORM_INLINE EVENGINE_API
172#define EVENGINE_API_BACKENDS_INLINE EVENGINE_API
173#define EVENGINE_API_WORLD_INLINE EVENGINE_API
174#define EVENGINE_API_DOMAINS_INLINE EVENGINE_API
175#define EVENGINE_API_ORCHESTRATION_INLINE EVENGINE_API
176#define EVENGINE_API_EDITORS_INLINE EVENGINE_API
177#endif
178
180#if defined(_WIN32)
181# define EVE_PLUGIN_EXPORT extern "C" __declspec(dllexport)
182#else
183# define EVE_PLUGIN_EXPORT extern "C" __attribute__((visibility("default")))
184#endif