1

Cocos2d-x中“ class CC_DLL CCSize ”这一行中CC_DLL的规范是什么。 cocos2d-x 中的每个 Class 都这样定义 --> class ..... classname 它给我造成了混乱。请帮帮我。

谢谢,

4

2 回答 2

2

它可能是一个预处理器定义,告诉模块导出或导入类。

就像是:

#ifdef BUILDING_COCOS
#define CC_DLL _declspec(dllexport)
#else
#define CC_DLL _declspec(dllimport)
#endif

链接库时,BUILDING_COCOS未定义,因此CC_DLL将 mean _declspec(dllimport),它告诉编译器该类以二进制文件的形式导出。

于 2011-12-07T12:41:14.040 回答
1

我假设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 导入实现。

于 2011-12-07T12:44:36.247 回答