extern关键字引发LNK2001链接错误问题求助
解决extern变量的LNK2001链接错误
错误原因
你在cpp文件中定义的engineInstance属于全局命名空间,而头文件中extern声明的是vkWrapper命名空间下的engineInstance,两者是完全不同的变量实体,导致链接器找不到头文件中声明的命名空间内变量的定义,触发LNK2001错误。
修复步骤
修改cpp文件中的变量定义,将其放入vkWrapper命名空间中:
namespace vkWrapper { EngineInstance* engineInstance; }
补充说明
- 头文件中的
extern EngineInstance* engineInstance;是在vkWrapper命名空间内声明变量,告诉编译器这个变量在其他文件中定义。 - 你之前的cpp代码
vkWrapper::EngineInstance* engineInstance;等价于在全局空间定义了一个指向vkWrapper::EngineInstance类型的指针变量,和头文件声明的命名空间内变量无关。 - 只有让变量的定义和声明处于同一命名空间下,链接器才能正确关联两者,解决未解析外部符号的问题。
内容的提问来源于stack exchange,提问作者yigitEmre
相关产品推荐
相关产品推荐

