undefined reference to `vtable for`

目的

解决C++ undefined reference to vtable for xxx 类型问题. 主要是由于某种原因导致Makefile里面obj文件没有这个类并没有Q_OBJECT信息,所以在执行Makefile时候也就没有moc xxx.h,最终导致编译连接时候符号决议没找到对应符号。可能你在该类中即使直接或者间接继承自QObject, 并附加有Q_OBJECT, 如果qmake, 重新构建后,但是仍然报此错误, 建议查看pro文件引用include 路径是不是不对 ,我的是这个问题导致, 主要是未链接目标文件导致
stackoverflow
说:
总之,导致“对vtable的引用未定义”错误的三个主要原因:

1. 成员函数缺少其定义。
2. 未链接目标文件。
3. 所有虚函数都有内联定义。

这些原因本身不足以独自导致错误。而是,这些是您解决错误所要解决的问题。不要指望有意制造这些情况中的一种肯定会产生此错误;还有其他要求。请确保解决这些情况将解决此错误。

解决方案:

  1. 查看您的类定义。查找第一个非内联虚拟函数,该函数不是纯虚函数(不是“ = 0”),并且要提供其定义(不是“ = default”)。
    如果没有这样的功能,请尝试修改您的类,以便有一个。(错误可能已解决。)

  2. 查找该函数的定义。如果丢失,请添加!(错误可能已解决。)

  3. 检查您的链接命令。如果它没有使用该函数的定义提及目标文件,请修复该问题!(错误可能已解决。)

  4. 对每个虚拟功能重复步骤2和3,然后对每个非虚拟功能重复步骤2,直到错误解决。如果仍然遇到问题,请对每个静态数据成员重复此操作。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道阻且长,行则降至

无聊,打赏求刺激而已

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值