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

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

今天编译某个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】qt下使用内置库进行IP地址获取,网卡信息读取

【QT】qt下使用内置库进行IP地址获取,网卡信息读取

近期由于需要使用这些项目,所以自然而然的将找到的代码贡献出来咯!下面是代码, 记得在 PRO文件内假如 QT += network#include <QtDebug>...

[QT]qt 程序退出代码。

  1.关闭主窗口并退出程序是    QApplication::exit()     2.如果是QDialog,就accept() 或 reje...

[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还提供另一个...

vs2022使用c++ std::any_of 等 c++ 11 标准语言时,提示报错namespace "std" has no member "all_of"

vs2022使用c++ std::any_of 等 c++ 11 标准语言时,提示报错namespace "std" has no member "all_of"...