qt编程时,遇到undefined reference to `vtable for xxx'怎么办

哎哎8年前 (2016-08-18)C++4263

今天编译某个arm程序时,添加了个

Q_OBJECT 的宏

然后编译报错


arm-none-linux-gnueabi-g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Trolltech/QtEmbedded-4.7.0-arm/mkspecs/linux-g++ -I. -I/usr/local/Trolltech/QtEmbedded-4.7.0-arm/include/QtCore -I/usr/local/Trolltech/QtEmbedded-4.7.0-arm/include/QtNetwork -I/usr/local/Trolltech/QtEmbedded-4.7.0-arm/include -I. -o contrlrtu.o contrlrtu.cpp
arm-none-linux-gnueabi-g++ -Wl,-O1 -Wl,-rpath,/usr/local/Trolltech/QtEmbedded-4.7.0-arm/lib -o arm_Udp_Bind_Serial_Send main.o udpbind_con.o rcvmsgprint.o contrlrtu.o moc_udpbind_con.o moc_rcvmsgprint.o    -L/usr/local/Trolltech/QtEmbedded-4.7.0-arm/lib -lQtNetwork -L/home/develop/yizhi/GUI/tslib/installdir/lib -L/usr/local/Trolltech/QtEmbedded-4.7.0-arm/lib -lQtCore -lpthread 
contrlrtu.o: In function `ContrlRtu::ContrlRtu(QObject*)':
contrlrtu.cpp:(.text+0x1c): undefined reference to `vtable for ContrlRtu'
contrlrtu.o: In function `ContrlRtu::~ContrlRtu()':
contrlrtu.cpp:(.text+0x6c): undefined reference to `vtable for ContrlRtu'
collect2: ld returned 1 exit status
make: *** [arm_Udp_Bind_Serial_Send] 错误 1


解决方法:


make clean

qmake

make

即可,因为新加的Q_OBJECT宏没有被moc,所以会导致,编译出错。

相关文章

Qt QString类型转换为其他类型的函数

  把QString转换为 double类型  方法1.QString str="123.45";   double val=str.toDouble();&...

解决QWidget: Cannot create a QWidget when no GUI is being used

  长时间不用Qt了,新建了个控制台工程再添加自己的类,即是不想使用designer来设计自己的界面,编译时没有错误,执行时出现QWidget: Cannot create a QWidget whe...

[WINDDK]系统驱动开发,出现 __IN_ 未定义的类型解决方案。 vs2008 winddk

1>stdafx.cpp1>C:\Program Files\Microsoft Visual Studio 9.0\VC\include\excpt.h(60) : error C206...

好久没更新了,这次介绍 qDebug()的所有输出转移至文件中

#include <QtDebug> #include <QFile> #include <QTextStream> #defi...

Gist一直可用

136 人赞同了该回答Github作为代码分享平台在开发者中非常流行。此平台托管了包括游戏、书籍以至于字体在内的一千两百多万个项目(现在更多),这使其成为互联网上最大的代码库。Github还提供另一个...