2

QT Creator を使用して GUI を作成する宿題に取り組み始めましたが、このエラーが発生し、その理由を見つけることができず、その意味を理解することもできません。メイン関数が 2 回表示されると思いますが、理由はわかりません... このエラーの修正を手伝ってください:

エラー:

Makefile.Debug:155: warning: overriding commands for target `debug/main.o'
    Makefile.Debug:142: warning: ignoring old commands for target `debug/main.o'
    debug/main.o: In function `Z5qMainiPPc':
    D:\c++\Labs\GUI_r/../../../info/qt/Desktop/Qt/4.8.1/mingw/include/QtGui/qwidget.h:494: multiple definition of `qMain(int, char**)'
    debug/main.o:D:\c++\Labs\GUI_r/main.cpp:7: first defined here
    collect2: ld returned 1 exit status

コード:

#include <QtGui/QApplication>
#include "mainwindow.h"
#include "controller.h"
#include "StudentRepository.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    StudentRepository *stre = new StudentRepository();
    Controller *c = new Controller(stre);
    MainWindow w(c);
    w.show();

    return a.exec();
}

編集: 長いコードが削除されました - エラーの理由ではありません。回答を確認してください。

4

4 に答える 4

12

そのリンク エラーの理由は、QT 作成者に代わって awkawrd の動作が原因です。私はprojectName.proにいました -

QT       +=    core gui

TARGET = GUI_r
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp \
    main.cpp \                   /////// Double call of main.cpp
    StudentRepository.cpp \
    controller.cpp

HEADERS  += mainwindow.h \
    controller.h \
    StudentRepository.h \
Student.h \
ui_mainwindow.h \        /////Double call of ui_mainwindow.h 
ui_mainwindow.h

FORMS    += mainwindow.ui

ありがとう、この投稿が QTcreator の他の新規ユーザーに役立つことを願っています。

于 2012-05-30T13:26:45.510 に答える
5

プロジェクトには、メインの別のソース ファイルが含まれている可能性があります。どこかでファイルが重複しています。.pro ファイルの "SOURCES =" と main.cpp を確認してください。

于 2012-05-30T12:51:21.977 に答える
2

プログラムごとに1 つ しか持てません。QApplication

クラス (Controller、StudentRepository、MainWindow) を見直して、それらも宣言していないことを確認してQApplicationください。

于 2012-05-30T12:54:18.963 に答える
1

メインではなく、の 2 つの定義が表示されqMainます。

おそらく、サンプル プログラムを取得し、コードを追加して変更したことがあるでしょう。これらの手順を再現して、いつ機能しなくなったかを確認します。コードを書くときは、できるだけ頻繁にコンパイルを行い、エラーを導入した直後にそのようなエラーを見つけます。

于 2012-05-30T12:55:34.793 に答える