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

时间:2013-01-22 01:56:05

标签: c++ qt

我对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(class QWidget *)”(?? 0graph @@ QAE @ PAVQWidget @@@ Z)在函数“private:void __thiscall Scouting :: on_actionGraphs_triggered”中引用(无效)“(?on_actionGraphs_triggered @ Scouting @@ AAEXXZ)

显示了两个与此类似的错误。

为什么会这样?我按照这个人的教程做了他做的事,但他似乎没有任何错误。

scouting.cpp:

http://pastebin.com/NEEu9jmM

table.h:

http://pastebin.com/BMDCkcwJ

table.cpp

位于附加评论部分,因为我无法发布超过2个链接。

3 个答案:

答案 0 :(得分:3)

我相信您正在Windows上构建应用程序。我怀疑visual studio项目文件没有使用添加的文件进行更新,这导致了问题。只需删除visual studio build文件夹,然后重建即可。它会正常工作。

答案 1 :(得分:2)

通常有两个可能的原因:


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()
{
    ...
}

答案 2 :(得分:1)

这是来自链接器的错误,无法将所有目标文件链接在一起。

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