undefined reference to vtable for DeviceAllocator‘
参考:
https://stackoverflow.com/questions/3065154/undefined-reference-to-vtable
这个错误是由于 DeviceAllocator
类的虚函数表(vtable)无法正确生成,通常是因为没有提供虚函数的定义,或者存在某些未定义的虚拟函数
解决 "undefined reference to 'vtable'" 错误的方法
该错误通常由 虚函数表(vtable)未正确生成 引起,常见原因及解决方法如下:
1. 虚析构函数未定义
- 问题:若类有虚函数,编译器需为其生成 vtable。若虚析构函数声明但未定义,会导致 vtable 缺失。
- 示例:
// 头文件 (CGameModule.h) class CGameModule : public Dasher::CDasherComponent { public:virtual ~CGameModule(); // 声明但未在 .cpp 中定义 };
- 解决:在
.cpp
文件中添加析构函数的定义: -
// 源文件 (CGameModule.cpp) CGameModule::~CGameModule() {} // 空实现即可