Ricevo il seguente errore del linker durante la creazione della mia applicazione.Errore Q_OBJECT linker!
HIMyClass.obj:: error: unresolved external symbol "public: virtual struct QMetaObject const * __thiscall CHIMyClass::metaObject(void)const " ([email protected]@@[email protected]@XZ) File not found : HIMyClass.obj
HIMyClass.obj:: error: unresolved external symbol "public: virtual void * __thiscall CHIMyClass::qt_metacast(char const *)" ([email protected]@@[email protected]) File not found : HIMyClass.obj
HIMyClass.obj:: error: unresolved external symbol "public: virtual int __thiscall CHIMyClass::qt_metacall(enum QMetaObject::Call,int,void * *)" ([email protected]@@[email protected]@@[email protected]) File not found : HIMyClass.obj
La mia dichiarazione di classe è come
class CHIMyClass:public QDialog
{
Q_OBJECT
....
};
Quando io commento Q_OBJECT l'errore di linker si spegne (e ovviamente io non sono in grado di utilizzare i segnali e gli slot). Sto usando Qt Creator come IDE e Qt 4.5.3. Quando restituisco Ricostruisci tutti è definito che verrà chiamato QMake. Immagino che, la sua generazione di file moc_ * è dove si trova il problema. Sto usando Windows XP e cl come compilatore.
Quale potrebbe essere la causa di questo errore del linker?
Forse 'File non trovato: HIMyClass.obj' ci dice che Qt Creator non ha visto i file moc/obj/temp? – mosg
Davvero, riesegui qmake. Inoltre, controlla i caratteri "\" mancanti o extra nel tuo file .pro. – andref