Проблемы с попыткой унаследовать QLCDNumber в Qt

вот мой настраиваемый класс LCD, унаследованный от QLCDNumber.

myLCD.h :

#ifndef MYLCD_H
#define MYLCD_H

#include <QLCDNumber>

class MyLCD : public QLCDNumber
{
    Q_OBJECT

public:
    MyLCD(QWidget* parent=0);


};


#endif // MYLCD_H

myLCD.cpp :

#include "MyLCD.h"


MyLCD::MyLCD(QWidget* parent)
    :QLCDNumber(parent)
{}

Ничего более элементарного, чем это..

в моем файле main.cpp я включаю "myLCD.h", и все работает правильно.

Но когда я пытаюсь создать объект myLCD:

MyLCD* lcd = new MyLCD;

Я получаю следующие проблемы:

  • *main.obj:-1: ошибка: LNK2019: неразрешенный внешний символ "public: __thiscall MyLCD::MyLCD (класс QWidget *)" (??0MyLCD@@QAE@PAVQWidget@@@Z), на который ссылается функция _main*

  • debug\partie2.exe:-1: ошибка: LNK1120: 1 неразрешенный внешний файл

есть идеи, что это может быть?


изменить: я использую QtCreator

изменить 2): это результат компиляции.

14:33:28: Running steps for project partie2...
14:33:28: Configuration unchanged, skipping qmake step.
14:33:28: Starting: "C:\Qt\Qt5.0.0\Tools\QtCreator\bin\jom.exe" 
    C:\Qt\Qt5.0.0\Tools\QtCreator\bin\jom.exe -f Makefile.Debug
    echo 1 /* CREATEPROCESS_MANIFEST_RESOURCE_ID */ 24 /* RT_MANIFEST */ "debug\\partie2.exe.embed.manifest">debug\partie2.exe_manifest.rc
    if not exist debug\partie2.exe del debug\partie2.exe.embed.manifest>NUL 2>&1
    if exist debug\partie2.exe.embed.manifest copy /Y debug\partie2.exe.embed.manifest debug\partie2.exe_manifest.bak
    link /NOLOGO /DYNAMICBASE /NXCOMPAT /DEBUG /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MANIFEST /MANIFESTFILE:debug\partie2.exe.embed.manifest /OUT:debug\partie2.exe @C:\Users\val\AppData\Local\Temp\partie2.exe.10692.62.jom
main.obj : error LNK2019: unresolved external symbol "public: __thiscall MyLCD::MyLCD(class QWidget *)" (??0MyLCD@@QAE@PAVQWidget@@@Z) referenced in function _main
debug\partie2.exe : fatal error LNK1120: 1 unresolved externals
jom: H:\Fac\L3\S6\IHM\practical\Qt\TP2\sources\partie2\partie2-build-Desktop_Qt_5_0_0_MSVC2010_32bit_SDK-Debug\Makefile.Debug [debug\partie2.exe] Error 1120
jom: H:\Fac\L3\S6\IHM\practical\Qt\TP2\sources\partie2\partie2-build-Desktop_Qt_5_0_0_MSVC2010_32bit_SDK-Debug\Makefile [debug] Error 2
14:33:29: The process "C:\Qt\Qt5.0.0\Tools\QtCreator\bin\jom.exe" exited with code 2.
Error while building/deploying project partie2 (kit: Desktop Qt 5.0.0 MSVC2010 32bit (SDK))
When executing step 'Make'

person vdegenne    schedule 08.02.2013    source источник
comment
Где находится реализация MyLCD? В файле main.cpp? И я полагаю, что это должно быть new MyLCD; (заглавная М), верно?   -  person Andreas Fester    schedule 08.02.2013
comment
Хорошее редактирование :) Как вы связываетесь? Командная строка или через какую-то IDE? Как выглядит вызов компоновщика?   -  person Andreas Fester    schedule 08.02.2013
comment
Похоже, ваш файл myLCD.cpp не попадает в процесс сборки? Вы правильно видите его в списке исходных файлов в QtCreator? Если нет, добавьте его и перестройте.   -  person Bret Kuhns    schedule 08.02.2013
comment
Вы забыли макрос Q_OBJECT и добавили его позже? Если это так, запустите qmake, а затем выполните сборку.   -  person Zlatomir    schedule 08.02.2013


Ответы (1)


Я отвечаю на свой вопрос, так как ошибка не была логически поддающейся ответу.

Наконец-то я удалил папку Debug.

Когда я построил еще раз, папка Debug была создана обратно, и проблем не было.

Я действительно не знаю, в чем причина, с каких пор мы должны иметь дело с файловой системой в надежной IDE?

person vdegenne    schedule 08.02.2013
comment
Тьфу, я так много раз натыкался на это в QtCreator. Полная перестройка даже не устраняет проблему, вам буквально нужно удалить папку (папки) Debug/Release, чтобы правильно связать все. Visual Studio не имеет этой проблемы и использует тот же компилятор... - person Bret Kuhns; 08.02.2013
comment
в QtCreator есть команда run qmake, я думаю, это также решает проблему (?) Я до сих пор не использую эту компиляцию, так как я всегда собирал и запускал все свои приложения раньше - person vdegenne; 08.02.2013