参考:

        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() {} // 空实现即可

更多推荐