Maison > développement back-end > C++ > le corps du texte

Pourquoi est-ce que je reçois une erreur \'\'référence non définie à vtable\'\' lors de l'utilisation de Q_OBJECT ?

Linda Hamilton
Libérer: 2024-10-27 07:30:03
original
345 Les gens l'ont consulté

Why am I getting an

Erreur « référence non définie à vtable » lors de l'utilisation de Q_OBJECT

L'erreur « référence non définie à vtable » se produit lorsque l'éditeur de liens ne parvient pas à trouver la table de fonctions virtuelles (vtable) pour une classe qui hérite de QObject et déclare la macro Q_OBJECT. Cette erreur peut survenir pour plusieurs raisons.

Causes possibles :

  • Unité MOC manquante : Le MOC (compilateur de méta-objets) génère un fichier unité distinct qui contient l'implémentation de la fonctionnalité liée à QObject. Assurez-vous que l'unité générée par MOC est incluse dans le processus de liaison.
  • Déclaration de classe dans le fichier d'implémentation : Placez la déclaration de classe dans un fichier d'en-tête séparé au lieu du fichier d'implémentation. Le système de build n'analyse peut-être pas les fichiers d'implémentation pour le traitement MOC.
  • Invocation qmake manquante : Qmake génère les règles de construction nécessaires au MOC. Si la classe n'appartenait pas initialement au système de méta-objets Qt, exécutez à nouveau qmake pour mettre à jour son horodatage et déclencher son exécution.

Solution :

Pour résoudre ce problème, suivez ces étapes :

  1. Déplacez la déclaration de classe vers un fichier d'en-tête distinct.
  2. Exécutez "Exécuter qmake" depuis le menu contextuel du projet dans Qt Creator ou manuellement mettez à jour l'horodatage du fichier de projet pour forcer l'invocation de qmake.
  3. Assurez-vous que l'unité MOC générée est incluse dans le processus de liaison.

Ces mesures devraient éliminer l'erreur « référence non définie à la table virtuelle » et laissez votre code se compiler avec succès.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal