2014-01-07 2 views
4

저는 C++과 Qt를 처음 사용합니다. 내 문제는, 내가 새로운 수업을 만들었고 컴파일되지 않는다는 것입니다. 그래서 컴파일러는 "unresolved Object in ..."라고 말합니다.QtCreator : 대상 디버그/... obj가 없습니다.

#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 

클래스 :

이 mainwindow.cpp에서
#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(); 
} 

: 주에서

TransitiousPlayer player; 
player.play(); 

내가 또한 전화 : 이 헤더이다 나는 경우

qRegisterMetaType<TransitiousPlayer>(); 

만 transitiou 컴파일하려고 splayer.cpp, 다음과 같이 말합니다 : "대상 디버그/transitiousplayer.obj가 없습니다."

+0

qmake를 사용하는 경우 프로젝트 파일을 업로드 할 수 있습니까? 어떤 OS입니까? OT : Fwiw, "Transitious"는 제가 아는 한 영어 단어가 아닙니다. – lpapp

+0

파일을 수동으로 메이크 파일에 추가했고 저에게 도움이되었습니다. OS는 Windows이고 Qt 생성자를 사용하고 있습니다. Qt Creator의 C++ 클래스에 대한 속성이 있습니까? 어쩌면 "컴파일"확인란? "Transitious"는 환상적인 이름과 작업 제목입니다. – theporenta

+0

소스 및 헤더 파일을 추가 할 수 있으며 백그라운드 qmake 파일에 자동으로 추가됩니다. 프로젝트 파일을 직접 여는 경우'HEADERS' 변수와'SOURCES' 변수가 입력되어 있음을 알 수 있습니다. 또한 수동으로 사용자 정의 할 수 있으며 프로젝트 트리를 재생성하는 동안 자동으로 다시 구문 분석됩니다. 필요한 파일이 거기에 추가되었는지 확인하십시오. – lpapp

답변

11

아마도 너무 늦어서 도움이되었지만 동일한 문제가 있었으며 QT (5.2.0)에 익숙하지 않습니다.

어떤 이유로 메이크 파일이 이미 만들어진 경우, 제 상황에서는 클린을 수행한다고 가정 한 '클린'을 선택하더라도 메이크 파일에 메이크 파일이 추가되지 않습니다.

저에게 도움이되는 해결책은 빌드 디렉토리의 내용을 수동으로 삭제하고 빌드를 다시 히트하면 다시 작성됩니다. 이게 아니라면 무엇이 깨끗하게해야하는지 잘 모르겠습니다.

필자는 빌드하고 실행 한 두 개의 클래스로 프로젝트를 만들었으며 파일 -> 새 파일 .. C++ 클래스로 새 클래스를 만들었습니다. 내 수업을 쓴 다음 다시 실행해라. 내 생성자가 누락되었습니다. 그 파일을 빌드하고 동일한 타겟 디버그를 얻으십시오/... obj가 존재하지 않습니다. pro 파일을 검사하고 클래스 소스 및 헤더 이름이 있는지, 디스크를 검사했는지, 그 파일이 있는지, Makefile.Debug를 확인했는지, 그리고 해당 파일의 흔적이 없는지 여부를 확인합니다. 깨끗하게 치면 makefile이 변경되지 않았습니다. build-Projectname-Desktop-qt_5_2_0 .. 디렉터리의 내용을 삭제하고 실행하여 문제없이 빌드하고 실행했습니다.

2

향후 참조 용으로 게시 됨 : 새 클래스 파일을 추가 한 후이 문제가 발생하여 컴파일 할 새 파일을 얻으십시오. 빌드 메뉴에서 qmake를 실행해야합니다.

+0

그래서 내 메인 루틴은'add class' =>'run qmake'입니다. – deW1

+0

@Tim shoot 위의 대답을 먼저 보았습니다. 이 소리가 나면 다음에 시도해 볼 것입니다. – yano

관련 문제