Maison >développement back-end >C++ >Pourquoi est-ce que j'obtiens une « erreur de référence vtable » avec Q_OBJECT dans Qt ?

Pourquoi est-ce que j'obtiens une « erreur de référence vtable » avec Q_OBJECT dans Qt ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-28 06:53:02437parcourir

Why Do I Get a

Erreur de référence vtable avec Q_OBJECT dans Qt

Dans ce cas, l'éditeur de liens est incapable de localiser la table de fonctions virtuelles (vtable) pour le Classe T, entraînant l'erreur "référence non définie à `vtable pour T'". Ce problème survient lorsque l'unité générée par MOC, responsable de la gestion du système de méta-objets de Qt, est exclue du processus de liaison.

Pour résoudre ce problème, considérez ce qui suit :

  • Fichier d'en-tête séparé : Définissez la classe T dans un fichier d'en-tête séparé. Cela garantit que le système de build analyse le fichier d'en-tête lors de la compilation.
  • Qmake mis à jour : Si la classe ne faisait pas auparavant partie du système de méta-objets, réexécutez qmake en modifiant l'horodatage du fichier du projet (par exemple, ajouter et supprimer des espaces) pour forcer son exécution.
  • Intégration de Qt Creator : Dans Qt Creator, sélectionner « Exécuter qmake » dans le menu contextuel du projet déclenche l'exécution de qmake .

Une fois ces étapes suivies, l'unité MOC sera incluse dans le processus de liaison, résolvant ainsi l'erreur de référence de la table vtable.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn