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

哎哎7年前C++3583

今天编译某个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 中修改程序form图标,mainwindow图标

  1、通过qtcreator新建一个文件filename.qrc,将图片添加到filename.qrc文件中:选择Add Prefix得到/new/prefix1,简单点改为/,再选Add File...

[QT]qt 程序退出代码。

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

memcpy函数实现

memcpy函数实现

    memcpy函数在面试中很容易被问到如何去实现。memcpy函数是内存拷贝函数,用于将一段内存空间数据拷贝到另一段内存空间中,但是它和memmove函数不同的是,它对内存空...

使用QT设计师,快速将 ACTIONS 放入toolbar中

使用QT设计师,快速将 ACTIONS 放入toolbar中

  网上很多例子,都是手动敲代码在Qt界面工具栏中插入Action,实际QTDesigner本身带有其功能,而且非常方便。  插入完界面后,我们还可以去看它生成的代码,了解一下如何手动插入工具栏按钮。...

C/C++ 转义符说明

\a (alert 警告) 产生一个可听或可视的警告并不改变当前位置。\b (backspace 退格) 将活动为止移动到当前航的上一个位置。如果活动为止是一行的初始位置,显示设备的行为是未指定的。\...

QSqlTableModel,使用简单教程。

Qt  QSqlTableModel  使用心得连接数据库执行sql查询,条件显示,排序获取记录数,列数以及记录内容,字段内容新增,修改,删除,恢复其它 &nb...