QT:关于qt工程在编译时提示undefined reference tp 'XXX::staticMetaObject'

当在编程QT应用程序在类的定义中包含Q_OBJECT宏,编译时qmake生成的makefile将会自动包含一些运行moc的规则,moc就是指QT的元对象编译器,即meta_object complier。

为了使moc能够正常运行,必须把类定义从实现文件中分离出来并放到头文件中。由moc生成的代码会包含这个头文件,并且会添加一些特殊的C++代码。

必须对使用了Q_OBJECT宏的类运行moc。因为qmake会自动在makefile中添加这些必要的规则,所以开发人员不必在编译时使用moc。但是如果忘记了使用qmake重新生成makefile,并且也没有重新运行moc,那么连接程序就会报错,指出你声明了一些函数但是却没有实现它们。在linux平台下,这些信息可能是'undefined reference to 'XXX::staticMetaObject'(XXX是类名)。

所以遇到这种情况时,可重新运行qmake生成新的makefile文件,然后在重新构建该应用程序。

(注:当程序中需要使用Q_OBJECT宏时,应将它放入头文件中。)

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值