我是C ++和Qt的新手。我的问题是,我创建了一个新类,但它没有被编译。 所以编译器说:“未解析的对象......”。 这是标题:
#ifndef TRANSITIOUSPLAYER_H
#define TRANSITIOUSPLAYER_H
#include <QtMultimedia>
class TransitiousPlayer
{
public:
TransitiousPlayer();
TransitiousPlayer(const TransitiousPlayer &other);
~TransitiousPlayer();
void play();
};
Q_DECLARE_METATYPE(TransitiousPlayer)
#endif // TRANSITIOUSPLAYER_H
类:
#include "transitiousplayer.h"
...
void TransitiousPlayer::play(){
QMediaPlayer* player = new QMediaPlayer(this);
QMediaPlaylist* playlist = new QMediaPlaylist(player);
playlist->playlist->addMedia(new QString("sh.mp3"));
player->setPlaylist(playlist);
player->play();
}
在mainwindow.cpp中:
TransitiousPlayer player;
player.play();
在主要我也打电话:
qRegisterMetaType<TransitiousPlayer>();
如果我只尝试编译transitiousplayer.cpp,它会说:“目标debug / transitiousplayer.obj不存在。”
答案 0 :(得分:12)
可能来不及帮助,但我遇到了同样的问题,也是QT(5.2.0)的新手。
出于某种原因,如果已经创建了makefile,在我的情况下,它就不会将它添加到makefile中,即使你选择了'Clean',这就是我认为Clean会做的。
对我有用的解决方案是手动删除构建目录的内容并再次点击构建,在这种情况下,它会重新创建它。如果不是这样的话,我不确定应该做什么。
我有一个包含几个类的项目,我构建并运行了这个类,然后使用File-&gt; New File .. C ++类创建了一个新类。写了我的课,再次按下跑步。 得到我的构造函数丢失了。点击该文件的构建并获得相同的目标调试/ ... obj不存在。 检查了pro文件,并且类源和头名称存在,检查了磁盘,它们在那里,检查了Makefile.Debug并且没有这些文件的痕迹。点击干净,它没有改变makefile。 删除了build-Projectname-Desktop-qt_5_2_0 ..目录的内容,点击了运行,它构建并运行没有问题。
答案 1 :(得分:4)
发布以备将来参考:我在添加新的类文件后遇到了这个问题,为了获得要编译的新文件,你必须在Build菜单下运行qmake。
答案 2 :(得分:0)
在Qt项目视图中,再次选择“运行qmake”。那一切都很好。