Maison >développement back-end >C++ >Pourquoi est-ce que j'obtiens des erreurs d'éditeur de liens « Référence non définie à « vtable pour XXX » » ou « ClassName::ClassName() » dans mon projet C ?
Erreur de liaison GCC C : référence non définie à 'vtable for XXX', 'ClassName::ClassName()'
Lors de la liaison d'un C projet dans Eclipse-CDT, les utilisateurs peuvent rencontrer des erreurs d'éditeur de liens telles que "référence non définie à 'vtable pour XXX'" ou "référence non définie à 'ClassName::ClassName()'". Ces erreurs indiquent des problèmes sous-jacents qui empêchent la liaison réussie des bibliothèques.
1. Confirmation du type de bibliothèque statique
Pour vérifier la nature 64 bits des bibliothèques statiques, exécutez la commande suivante dans le terminal :
file /path/to/library.a | grep -i "64-bit"
Si "64 bits" est présent dans la sortie, la bibliothèque est en 64 bits.
2. Validation des classes et des méthodes de la bibliothèque
Pour vérifier si la bibliothèque contient la classe et les méthodes attendues, utilisez un outil de visualisation d'en-tête C comme ctags ou lldb. Par exemple, en utilisant ctags dans le terminal :
ctags -R /path/to/library_header_files_directory find /path/to/tags_file_directory NameOfClass
Cette commande recherche le nom de la classe dans le fichier de tags généré à partir des fichiers d'en-tête et indique s'il existe dans la bibliothèque.
3. Comprendre l'erreur
Dans ce cas, les erreurs de l'éditeur de liens indiquent une définition manquante pour les fonctions virtuelles remplacées dans la classe "SomeOtherClass". La déclaration existe mais manque de mise en œuvre. Pour résoudre ce problème, fournissez une définition de la méthode manquante dans « SomeOtherClass ».
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!