Qt:未找到体系结构的符号 x86_64
Qt: symbol(s) for not found for architecture x86_64
我是 Qt 的新手,一般来说只是编程方面的新手,在向我正在制作的游戏中添加分数时遇到了一些问题。我有一个分数 class、障碍物 class 和一个游戏 class,等等,我正在尝试连接当前用于生成障碍物的 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;
}
这里是我的游戏 class 源文件的相关部分,它创建了整个游戏:
#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
我正在尝试使用信号和槽来更新分数,而不是仅仅停留在零...但我不知道如何解决这个错误。感谢您的帮助!
信号和槽机制依赖于名为 MOC 的 Qt 工具生成的额外源代码。您需要在 score.h 上 运行 MOC,并在您的项目中编译生成的 C++ 源代码。缺少的符号将在 MOC C++ 代码中。
如果您使用 qmake 生成您的项目文件,它会为您完成所有这些,但是在您使用 signals/slots 添加新的 类 之后,您需要再次 运行 qmake。
我是 Qt 的新手,一般来说只是编程方面的新手,在向我正在制作的游戏中添加分数时遇到了一些问题。我有一个分数 class、障碍物 class 和一个游戏 class,等等,我正在尝试连接当前用于生成障碍物的 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;
}
这里是我的游戏 class 源文件的相关部分,它创建了整个游戏:
#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
我正在尝试使用信号和槽来更新分数,而不是仅仅停留在零...但我不知道如何解决这个错误。感谢您的帮助!
信号和槽机制依赖于名为 MOC 的 Qt 工具生成的额外源代码。您需要在 score.h 上 运行 MOC,并在您的项目中编译生成的 C++ 源代码。缺少的符号将在 MOC C++ 代码中。
如果您使用 qmake 生成您的项目文件,它会为您完成所有这些,但是在您使用 signals/slots 添加新的 类 之后,您需要再次 运行 qmake。