Qt:找不到架构x86_64的符号

时间:2015-04-28 02:01:23

标签: c++ qt class qml

我是Qt的新手,而且只是一般的编程,而且我在制作游戏时会遇到一些问题。我有一个分数类,障碍类和一个游戏类等,我试图连接当前用来产生障碍的QTimer来更新分数,这样得分每2500毫秒增加1。请帮忙!

这是我的得分头文件:

#include <QGraphicsTextItem>
#include <QObject>

class score : public QGraphicsTextItem {
Q_OBJECT
public:
//constructor
score(QGraphicsItem * parent=0);

//other functions
int get_score();
int score_value;

public slots:
void increase_score();
};

#endif // SCORE

以下是得分源文件:

//i'm including QFont, QString, QObject, and QDebug
#include "score.h"
#include "obstacle.h"

score::score(QGraphicsItem *parent) : QGraphicsTextItem(parent){
  //initialize score to zero
  score_value = 0;

  //draw the text
  setPlainText(QString("Score: ") + QString::number(score_value));
  setDefaultTextColor(Qt::white);
  setFont(QFont("arial",25));
}

void score::increase_score(){
  score_value++;
  qDebug() << "score has increased";
  setPlainText(QString("Score: ") + QString::number(score_value));
}

int score::get_score() {
 return score_value;
}

这里是我的游戏类源文件的相关部分,它创建了整个游戏:

#include "game.h"
#include "score.h"
#include "main_menu.h"
#include "game_over.h"
#include <QObject>
#include <QImage>
#include <QBrush>
#include <QTimer>

game::game(QWidget *parent) {

...

  //create the score
  Score = new score();
  scene->addItem(Score);

  //spawn obstacles
  QTimer * timer = new QTimer();
  QObject::connect(timer, SIGNAL(timeout()), copter, SLOT(spawn()));
  timer->start(2500);
  //connect score to timer
  connect(timer, SIGNAL(timeout()), Score, SLOT(increase_score()));
  }

现在我收到错误说

未找到架构x86_64

的符号

链接器命令失败,退出代码为1

我尝试使用信号和插槽以便分数更新而不是仅仅位于零...但我不知道如何修复此错误。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

信号和插槽机制依赖于名为MOC的Qt工具生成的额外源代码。您需要在score.h上运行MOC,并在项目中编译生成的C ++源代码。缺少的符号将在MOC C ++代码中。

如果您使用qmake生成项目文件,它将为您完成所有这些操作,但在添加带有信号/插槽的新类之后,您需要再次运行qmake。