所以我正在查看 Ogre Character 示例,并且有一个类被声明为
class _OgreSampleClassExport Sample_Character : public SdkSample
类标识符是 Sample_Character,它派生自 SdkSample 类。_OgreSampleClassExport 是什么?
在 Windows 平台上_OgreSampleClassExport
是一个用于指定类成员的 DLL 链接的宏。如果宏扩展为__declspec(dllimport)
成员存在于外部 DLL 中且必须导入。如果它扩展到__declspec(dllexport)
正在构建的 DLL 中存在的成员,将被导出。如果宏为空,则成员将被静态链接,并且不会在 DLL 中退出。
在其他平台上,它的工作方式大致相同。在 Linux 上,使用 GCC 编译时,宏会扩展为__attribute__ ((visibility("???")))
“???” 以与 to 中使用的方式类似的方式指定链接__declspec()
。
这篇文章似乎相关 - 类关键字后的宏变量
本质上,它允许导出类以支持动态链接库。