15

MinGW コンパイラを使用して、C++ を使用して Qt で単純な GUI アプリケーション (これまでのところ) を作成しようとしています。ただし、コンパイラは、私がmultiple definition of 'WiimoteScouter::WiimoteScouter(QWidget*)'オンline 4になっていることを通知していwiimotescouter.cppます。ヘッダーが複数回含まれていないことを確認するためにチェックを使用していますが、明らかに機能していません。理由はわかりません。

ヘッダーファイルは次のとおりです。

#ifndef WIIMOTESCOUTER_H
#define WIIMOTESCOUTER_H

#include <QWidget>

class QLabel;
class QLineEdit;
class QTextEdit;

class WiimoteScouter : public QWidget
{
    Q_OBJECT

public:
    WiimoteScouter(QWidget *parent = 0);

private:
    QLineEdit *eventLine;
};

#endif // WIIMOTESCOUTER_H

cpp ファイルは次のとおりです。

#include <QtGui>
#include "wiimotescouter.h"

WiimoteScouter::WiimoteScouter(QWidget *parent) :
    QWidget(parent)
{
    QLabel *eventLabel = new QLabel(tr("Event:"));
    eventLine = new QLineEdit;

    QGridLayout *mainLayout = new QGridLayout;
    mainLayout->addWidget(eventLabel, 0, 0);
    mainLayout->addWidget(eventLine, 0, 1);

    setLayout(mainLayout);
    setWindowTitle(tr("Wiimote Alliance Scouter"));
}

最後に、main.cpp:

#include <QtGui>
#include "wiimotescouter.h"

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

    WiimoteScouter wiimoteScouter;
    wiimoteScouter.show();

    return app.exec();
}
4

7 に答える 7

66

ソース ファイルがプロジェクト (.pro または .pri) ファイルで複製されたときに、これが発生するのを見たことがあります。プロジェクト ファイル内のすべての "SOURCES =" および "SOURCES +=" 行を確認し、cpp ファイルが複数回含まれていないことを確認します。

于 2011-02-11T14:58:11.323 に答える
2

私はMinGWを使用していませんが、これはコンパイラエラーではなくリンカーエラーのように聞こえます。この場合は、.CPPファイルがプロジェクトに2回追加されていないことを確認する必要があります。また、拡張子が「php」であることに気付きました。これは「cpp」である必要があるため、非常に珍しいことです。

于 2011-02-11T02:51:10.293 に答える
1

これは、異なるフォルダーに同じ名前の 2 つの .ui ファイルがある場合にも発生する可能性があります。それらに対応するヘッダーは同じディレクトリに構築されるため、1 つが上書きされます。少なくともそれが私の問題でした。

于 2015-05-11T04:16:15.857 に答える
1

参考までに答えてください:

含めていました

#include myclass.cpp

それ以外の

#include myclass.h
于 2013-08-06T00:27:10.457 に答える