我有一个头文件,比如说 Common.h,它包含在多个项目的所有文件中。基本上我想声明一个全局变量,例如:
class MemoryManager;
DLL_EXPORT MemoryManager* gMemoryManager;
当我这样做时,我收到大量链接器错误说
类 MemoryManager* gMemoryManager 已定义。
:(?
事实上,您正在每个编译文件中创建变量的单独副本。然后它们在链接阶段发生碰撞。请记住,预处理器会读入所有头文件,并从所有头文件中生成一个大文件。因此,每次编译这个大文件时,都会生成另一个相同的副本gMemoryManager
被建造。
你需要使用extern
并将其定义在一个非头文件中。
在你的头文件中
extern DLL_EXPORT MemoryManager* gMemoryManager;
在您的 C++ 文件之一中
DLL_EXPORT MemoryManager * gMemoryManager;
顺便说一句,我不知道 DLL_EXPORT 是做什么的,我只是假设它需要出现在这两个地方。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)