如题,在Qt类中需要用到信号和槽时,需要在类里面加上Q_OBJECT,但是加上之后再编译会报错undefined reference to staticMetaObject,重新编译也不管用,此时选择“执行qmake”,执行完成之后再进行编译就好了。
从工程中移除报错的源文件。重新编译成功后。再次添加报错的源文件。
“undefined reference to `Spreadsheet::staticMetaObject'” 这个错误提示。这个应该是 moc 这个东西出问题了。搜索了一下,在 StackOverflow 上有一个类似问题。回答中指出: “Remember to re-run qmake every time you add or removeQ_GADGETor Q_OBJECTmacro to get moc tool to re-generate code for meta ...
return staticMetaObject.trUtf8(s, c, n);} virtual int qt_metacall(QMetaObject::Call, int, void **); private:可以看到以上的代码声明了3个从⽗类继承的3个虚函数。本来这三个函数的实现应该是由moc_mywidget.cpp来完成。⽽当前的错误正是因为Makefile⾥没有将moc_mywidget.cpp加⼊编译引起。M...
static inline QString trUtf8(const char *s, const char *c, int n) { return staticMetaObject.trUtf8(s, c, n); } virtual int qt_metacall(QMetaObject::Call, int, void **); private: 1. 2. 3. 4. 5. 6. 7. 8. 9.
return staticMetaObject.trUtf8(s, c, n); }virtualint qt_metacall(QMetaObject::Call, int, void **); private: 可以看到以上的代码声明了3个从父类继承的3个虚函数。本来这三个函数的实现应该是由moc_mywidget.cpp来完成。 而当前的错误正是因为Makefile里没有将moc_mywidget.cpp加入编译引起。
/opt/qt57/lib/libQt5Test.so.5: undefined reference toQMetaObjectPrivate::signal(QMetaObject const*, int)@Qt_5' /opt/qt57/lib/libQt5Test.so.5: undefined reference toQObject::~QObject()@Qt_5' /opt/qt57/lib/libQt5Test.so.5: undefined reference toQByteArray::number(double, char, ...
MiniStack.cpp是一个自定义控件的程序。定义的MiniStackPrivateT的QObject对象类报错。 报错1: undefined reference to `vtable for MiniStackPrivateT’ 报错2: undefined reference to `MiniStackPrivateT::staticMetaObject’ 解决方... VS CODE 问题 undefined reference to `WinMain@16‘ ...
解决undefined reference to `vtable for MiniStackPrivateT‘问题 MiniStack.cpp是一个自定义控件的程序。定义的MiniStackPrivateT的QObject对象类报错。 报错1: undefined reference to `vtable for MiniStackPrivateT’ 报错2: undefined reference to `MiniStackPrivateT::staticMetaObject’ 解决方... ...
Q_OBJECT undefined reference to 问题 摘自:http://waiter94.blog.163.com/blog/static/5277376920103423144138/ 如果你的class的定义和身明 是放在同一cpp文件里 如: Test.cpp, 并且在class使用了slot/signal. 在这个cpp文件的最底部 加上 #include "文件名.moc" 会帮助你除去编译的问题 ...