我有一个头文件,比如说Common.h,它包含在几个项目的所有文件中.基本上我想声明一个全局变量,例如:
class MemoryManager;
DLL_EXPORT MemoryManager* gMemoryManager;
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我得到了大量的链接器错误
类MemoryManager*gMemoryManager已经定义.
:(?
小智 10
因为它是在每个编译文件中创建变量的单独副本.然后这些在连接阶段发生碰撞.请记住,预处理器会读入所有头文件,并在所有头文件中生成一个大文件.所以每次编译这个大文件时,gMemoryManager都会创建另一个相同的副本.
您需要extern在一个非头文件中使用和定义它.
在您的头文件中
extern DLL_EXPORT MemoryManager* gMemoryManager;
Run Code Online (Sandbox Code Playgroud)
在您的一个C++文件中
DLL_EXPORT MemoryManager * gMemoryManager;
Run Code Online (Sandbox Code Playgroud)
顺便说一下,我不知道DLL_EXPORT做了什么,我只是假设它需要进入两个地方.
| 归档时间: |
|
| 查看次数: |
4726 次 |
| 最近记录: |