Lors de la configuration d'un projet C, l'éditeur de liens génère parfois des erreurs déroutantes telles que "Référence non définie à vtable pour XXX" ou "Référence non définie à ClassName::ClassName()." Ces erreurs signifient principalement des problèmes liés aux fonctions virtuelles et à l'héritage.
Le problème survient souvent lorsqu'une classe enfant déclare une fonction virtuelle remplacée sans fournir de définition. Considérez l'extrait de code suivant :
class Base { public: virtual void f() = 0; }; class Derived : public Base { public: void f(); };
Dans cet exemple, la classe enfant Derived déclare une fonction remplacée f() mais ne la définit pas. Cette omission déclenche des erreurs de l'éditeur de liens car, même si le compilateur comprend la déclaration, l'éditeur de liens ne parvient pas à localiser la définition.
Vérifier la bibliothèque Architecture : Pour vérifier que les bibliothèques statiques auxquelles vous créez un lien sont 64 bits, reportez-vous à la documentation des bibliothèques ou utilisez la commande file pour inspecter la bibliothèque files :
file /path/to/library.a
Confirmer la présence de la classe : Pour vous assurer que la bibliothèque contient la classe et les méthodes attendues, utilisez la commande nm :
nm /path/to/library.a | grep SomeClass
Pour résoudre les erreurs de l'éditeur de liens et terminer le processus de liaison avec succès, fournissez les définitions de toutes les fonctions virtuelles déclarées dans les classes enfants et assurez-vous que les bibliothèques pertinentes sont correctement incluses dans l'étape de liaison.
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!