Cocos2d-x中“ class CC_DLL CCSize ”这一行中CC_DLL的规范是什么。
cocos2d-x 中的每个 Class 都这样定义 --> class ..... classname
它给我造成了混乱。请帮帮我。
谢谢,
Cocos2d-x中“ class CC_DLL CCSize ”这一行中CC_DLL的规范是什么。
cocos2d-x 中的每个 Class 都这样定义 --> class ..... classname
它给我造成了混乱。请帮帮我。
谢谢,
它可能是一个预处理器定义,告诉模块导出或导入类。
就像是:
#ifdef BUILDING_COCOS
#define CC_DLL _declspec(dllexport)
#else
#define CC_DLL _declspec(dllimport)
#endif
链接库时,BUILDING_COCOS
未定义,因此CC_DLL
将 mean _declspec(dllimport)
,它告诉编译器该类以二进制文件的形式导出。
我假设CC_DLL
定义是这样的(使用 MSVC 内在语法):
#ifdef CC_IS_IMPLEMENTATION /* or CC_IS_DLL_COMPILATION or something like that */
#define CC_DLL __declspec(dllexport)
#else
#define CC_DLL __declspec(dllimport)
#endif
这样做是为了有一个单一的定义,根据 API 是由用户使用还是由实现本身使用,将类导出或导入到 dll 或从 dll 导入。实现(.cpp
文件)看起来像这样:
// .cpp file
#define CC_IS_IMPLEMENTATION
// CC_DLL is now defined to __declspec(dllexport)
#include "myapi_stuff.h"
// implement it...
如果库/ dll 用户使用该 API(类),则将其定义为__declspec(dllimport)
从 dll 导入实现。