Ne répondez pas à la question "comment résoudre ce message d'erreur ?".
Dans le message d'erreur fourni par gold :
/usr/bin/ld.gold: the vtable symbol may be undefined
because the class is missing its key function
Qu'est-ce qu'un key function
? Je trouve une référence à ce sujet dans le Page de manuel GCC pour les attributs de fonction en vertu de l'article dllimport
. Le texte pertinent est le suivant :
Sur la cible SH Symbian OS, l'attribut dllimport a également un autre effet (sic) - il peut entraîner l'exportation des informations de type vtable et run-time d'une classe. Cela se produit lorsque la classe possède un constructeur dllimporté ou une fonction virtuelle non inline et non pure et que, pour l'une ou l'autre de ces deux conditions, la classe possède également un constructeur ou un destructeur inline et une fonction clé définie dans l'unité de traduction actuelle.
J'en déduis qu'il existe une fonction distincte des constructeurs ou des destructeurs, requise dans certaines conditions, lors de l'utilisation de l'outil de gestion de l'environnement. dllimport
attribut, sur Symbian OS. Intéressant, mais je compile pour Linux sur Linux, et grep -r dllimport
ne révèle rien. Ce paragraphe ne s'applique donc pas.
(Pour information, le problème provient (dans ce cas) d'un fichier non défini destructeur mais la documentation et le résultat de l'éditeur de liens se donnent beaucoup de mal pour distinguer une "fonction clé" d'un destructeur. Pour les autres types de symboles manquants, le linker épelle le nom du symbole manquant).
Alors, qu'est-ce qu'un key function
vraiment ?