Qt--- 一些常见问题处理(无法解析得外部符号,UI头文件找不到等)
Posted 林西索
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt--- 一些常见问题处理(无法解析得外部符号,UI头文件找不到等)相关的知识,希望对你有一定的参考价值。
1.编译,出错,提示:
mainwindowprivate.obj:-1: error: LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl MainWindowPrivate::metaObject(void)const " (?metaObject@MainWindowPrivate@@UEBAPEBUQMetaObject@@XZ)
从QObject继承了一个类:
#ifndef MAINWINDOWPRIVATE_H #define MAINWINDOWPRIVATE_H #include "DockManager.h" class MainWindowPrivate : public QObject { Q_OBJECT public: MainWindowPrivate(); virtual ~MainWindowPrivate(); public: void initDockWidget(QWidget *widget); private: ads::CDockManager *DockManager; }; #endif // MAINWINDOWPRIVATE_H
编译,出错,提示:
mainwindowprivate.obj:-1: error: LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __cdecl MainWindowPrivate::metaObject(void)const " (?metaObject@MainWindowPrivate@@UEBAPEBUQMetaObject@@XZ)
解决办法:
编译出错是因为没有生成moc_mainwindowprivate.cpp文件造成的。
如果新添加QObject派生类到您的项目,则必须再次运行qmake,即
1、清理项目(非必须)
2、运行qmake(必须)
3、构建项目(必须)
否则,如果在QObject继承的类上进行增量构建,那么您将拥有过时的moc文件,或者干脆没有moc文件。
原文链接: https://blog.csdn.net/libaineu2004/article/details/108215844
2.在UI设计界面不能通过添加槽函数来添加槽函数(。- 。)
类似于上面这个报错。
解决办法:
.对应 cpp 中include的头文件可能为大写 #include "ui_Dlg_CSP.h",导致添加槽时,找不到对应头文件,要手动改为小写。
Qt会根据 dlg_CSP.ui 自动生成一个ui_dlg_CSP.h,有时候改了UI后,没有自动重新生成,还是使用的旧的 .h。此时需要手动将旧的 .h删掉,然后构建。
3.
以上是关于Qt--- 一些常见问题处理(无法解析得外部符号,UI头文件找不到等)的主要内容,如果未能解决你的问题,请参考以下文章
Qt Creator LNK2019:使用 OpenCV 无法解析的外部符号
vs2010+qt4编译出现error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject等错误