Link2019:调用对话框qt的未解析的外部符号

Link2019: Unresolved external symbol for calling dialog qt

本文关键字:外部 符号 Link2019 调用 对话框 qt      更新时间:2023-10-16

我是QT编程的新手,当我试图让程序打开一个我按下按钮创建的新对话框时,我遇到了这个奇怪的错误。

我试图打开table.ui, robotdance.uigraph.uiscouting.ui按下一个按钮。在scouting.cpp:

table *teamtable = new table(this); teamtable->show();

我已经将。ui的头文件包含到scouting.cpp中,但它给了我这个错误:

scouting.obj: 1:

错误:LNK2019:未解析的外部符号"public: __thiscall graph::graph(类QWidget *)"(??0graph@@QAE@PAVQWidget@@@Z)在函数"private: void __thiscall scout::on_actionGraphs_triggered(void)"(? on_actionGraphs_triggered@Scouting@@AAEXXZ)

又出现了两个类似的错误。

为什么会发生这种情况?我按照这个家伙的教程做了,但他似乎没有得到任何错误。

scouting.cpp:
http://pastebin.com/NEEu9jmM

table.h:
http://pastebin.com/BMDCkcwJ

table.cpp

在附加评论部分,因为我不能发布超过2个链接。

我相信您正在windows上构建应用程序。我怀疑visual studio项目文件没有随着添加的文件更新,这就是导致问题的原因。只需删除visual studio构建文件夹,然后重新构建。

通常有两个可能的原因:


A)您没有将graph.cpp(和其他.cpp文件)添加到您的.pro文件
B)你的头文件看起来有点像这样
class graph : public QWidget
{
public:
    graph( QWidget* parent );
    ~graph();
    ...
}

但是你的源文件(.cpp)不包含这个:

#include "graph.h"
graph::graph( QWidget* parent ) :
    QWidget( parent )
{
    ...
}
graph::~graph()
{
    ...
}

链接器无法将所有目标文件链接在一起。

  • 您的头文件和源文件添加到您的项目?
  • 如果你在Qt中使用任何库,你可以将它们添加到项目的.pro文件(例如:QT += core gui webkitwidgets network)
  • 添加你在代码中使用的所有类的库指令。(如#include <QDialog>)
  • 不要忘记从你的项目路径中删除所有编译器生成的输出目录,注意不要删除你的项目的源目录,在删除项目的输出目录后,首先右键单击你的项目,点击Run qmake,然后构建你的项目。