0

ガード ヘッダーがあっても、ヘッダー ファイルを複数の cpp に含めることができないというエラーが発生しました。メインから DatabaseManager のインクルードを削除すると、ccode は正常にビルドされます

ここにヘッダーファイルがあります:

#ifndef DATABASEMANAGER_H
#define DATABASEMANAGER_H
#include <QSqlDatabase>
#include <QSqlQuery>
class DatabaseManager
{
 private:
    QSqlDatabase PatternLibrary;
    QSqlQuery query;
 public:
  DatabaseManager();
};
#endif

ここに.cppがあります:

#include "DatabaseManager.h"
#include <QSqlError>
#include <QDebug>

DatabaseManager::DatabaseManager()
{
}

ここにメインがあります:

#include "DatabaseManager.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    DatabaseManager x;
    MainWindow w;
    w.show();

    return a.exec();
}

これらのエラーを与える:

/Code/DB_RangePattern-build-desktop-Qt_4_8_1_in_PATH_ System _Debug/../DB_RangePattern/main.cpp:6: エラー: 最初にここで定義

collect2: ld が 1 つの終了ステータスを返しました

4

2 に答える 2

1

あなたはより大きなエラーの 1 行しか投稿していませんが、問題が何であるかを推測することはできます。あなたのクラスがDataBaseManageror DatabaseManager(大文字の変更に注意してください) かどうかわからないようですB

また、ヘッダー ファイルが残りのソース ファイルと一緒にある場合は、実行していることを確認してください( and#include "DatabaseManager.h"を使用しないでください)。<>

于 2013-03-15T20:44:02.590 に答える
0

パブリック関数が定義されているため、QSqlDatabaseがQSqlErrorを使用/インクルードしていると確信しています

QSqlError   lastError () const

再定義は、QSqlErrorを含めることから行われます

于 2013-03-15T20:47:55.173 に答える