2

我开始使用 QT creator 制作 GUI 来完成我的作业,但是我遇到了这个错误,我无法找到它的原因,我也无法理解它的含义。我想它两次看到我的主要功能,但我不知道为什么......请帮助我修复这个错误:

错误:

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

也许您的项目包含另一个带有 main.js 的源文件。某处文件重复。检查 .pro 文件中的“SOURCES =”和 main.cpp。

于 2012-05-30T12:51:21.977 回答
2

每个程序只能有一个 QApplication

检查您的类(Controller、StudentRepository、MainWindow)并确保它们也没有声明QApplication

于 2012-05-30T12:54:18.963 回答
1

它确实看到了 的两个定义qMain,而不是您的主要定义。

您可能已经获取了一个示例程序并通过添加代码对其进行了修改。重新创建这些步骤并查看它何时停止工作。编写代码时,请尽可能多地进行编译,以便在引入错误后立即发现这些错误。

于 2012-05-30T12:55:34.793 回答