QtCreator:目标debug / ... obj不存在

时间:2014-01-07 17:48:33

标签: c++ qt

我是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不存在。”

3 个答案:

答案 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”。那一切都很好。