我在Ogre Framework中找到了这个
class _OgreSampleClassExport Sample_Character : public SdkSample {
...
...
并且它的定义如下
#define _OgreSampleClassExport
为什么我们想拥有这个宏变量?
答案 0 :(得分:5)
据推测,可以通过修改(或有条件地定义)define来将特殊限定符(例如__declspec(dllexport)
)添加到此类中:
#define _OgreSampleClassExport __declspec(dllexport)
答案 1 :(得分:3)
允许未来的出口。 Ogre目前可能只是一个静态链接的库,但如果作者决定支持动态链接库(在某些平台上也称为共享库),他们将需要编写如下代码:
class
#ifdef EXPORTING
__declspec(dllexport)
#else
__declspec(dllimport)
#endif
Sample_Character [...]
......这只适用于MSVC。通常他们必须完成对Sample_Character和他们通过库提供的所有其他类的努力。使一个宏稍后定义更容易,因为他们只需要在一个地方执行此操作。