2

私は QT プログラミングが初めてで、ボタンを押して作成した新しいダイアログをプログラムに開かせようとしたときに、この奇妙なエラーが発生しました。

ボタンを押してtable.uirobotdance.ui、およびgraph.uiを開こうとしています。scouting.uiscouting.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(void) " (?on_actionGraphs_triggered@Scouting@@AAEXXZ)

これに似たエラーがさらに 2 つ表示されます。

なぜこうなった?私はこの男のチュートリアルに従い、彼がしたことをしましたが、エラーは発生していないようです。

scouting.cpp:

http://pastebin.com/NEEu9jmM

table.h:

http://pastebin.com/BMDCkcwJ

table.cpp

2 つ以上のリンクを投稿できないため、追加のコメント セクションにあります。

4

3 に答える 3

3

Windows上でアプリケーションを構築していると思います。Visual Studio のプロジェクト ファイルが追加されたファイルで更新されていないことが原因であると思われます。Visual Studio のビルド フォルダーを削除して、再ビルドするだけです。それはうまくいきます。

于 2013-08-09T11:24:51.993 に答える
2

通常、これには 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()
{
    ...
}
于 2013-01-22T09:10:44.617 に答える
1

これは、すべてのオブジェクト ファイルを一緒にリンクできないリンカからのエラーです。

  • ヘッダーとソース ファイルがプロジェクトに追加されましたか?
  • Qt でライブラリを使用している場合は、それらをプロジェクトの.proファイルに追加できます (例: QT += core gui webkitwidgets network)
  • コードで使用しているクラスのすべてのライブラリ ディレクティブを追加します。(など#include <QDialog>)
  • プロジェクトのパスからコンパイラが生成した出力ディレクトリをすべて削除することを忘れないでください。プロジェクトのソースディレクトリを削除しないでください。プロジェクトの出力ディレクトリを削除した後、最初にプロジェクトを右クリックし、プロジェクトをRun qmakeビルドします。
于 2013-01-23T15:46:56.123 に答える