Programarea pe Qt și din timp în timp de verificare forumuri, este necesar să se observe că programatorii de multe ori se luptă cu mesaje cum ar fi «referință nedefinit la vtable».
Voi încerca să descrie situația în care se poate produce această eroare, și să dea câteva sfaturi despre cum să-l evite.
acest mesaj apare mai des dacă utilizați MOC.
MOC (Meta-Object compilatoare, tradus ca sistem de meta-obiect / compilator) - un mecanism care se extinde C sintaxa ++.
MOC:
- este necesar mecanism de semnalizare sloturi;
- Acesta permite programatorului să obțină meta-informații despre subclasele QObject (QObject :: metaObject ());
- utilizat pentru internaționalizarea aplicației (QObject :: tr ());
- Acesta conține extensii utile C ++ sintaxa.
compilator MOC găsește și se ocupă de toate antetul proiectului.
Dacă apare o eroare «referință nedefinit la vtable», în primul rând, curățați proiectul și reconstrui aceasta, nu uitați să rulați qmake:
face curat
# Șterge manual toate fișierele-MOC dacă au rămas după curățiți
rm Makefile
qmake
face
Dacă problema persistă, verificați fișierul de proiect (* .pro). Verificați dacă toate fișierele antet necesare (inclusiv semnale și sloturi în special) au fost incluse în proiect. Fișierele listă antet trebuie să fie conținută într-o antetele de variabile:
Headere + = firstHeaderFile.h \
otherHeaderFile.h \
secondHeaderFile.h
Dacă utilizați în dosarul de proiect care conține fișierele antet, asigurați-vă că pentru a adăuga acest dosar la INCLUDEPATH variabila:
Dacă ați găsit o uitat h-, HPP-fișier - reconstrui din nou proiectul.
Problema persistă? Apoi, mai multe opțiuni: