“non virtuelle thunk <nom>”, référencé à partir de: Vtable pour <classname> <objectfile.o>
Lors de la compilation en mode debug mon xcode compilation a ces erreurs de liaison:
"<method name>", referenced from:
Vtable for <classname>in <objectfile.o>
"non-virtual thunk to <method name>", referenced from:
Vtable for <classname>in <objectfile.o>
la chose étrange est que Cela se produit uniquement dans l'un de mes build targets (deux objectifs sont à peu près la même chose pour le code), et en plus, si ces méthodes sont définies dans le fichier d'en-tête à la place de la .rpc, il fonctionne très bien pour les deux cibles.
De toutes ces méthodes sont virtuelles pures. La classe d'où ces erreurs se produisent hérite de plusieurs classes, mais une seule de ces causes de ces erreurs.
Quelqu'un a une idée de ce qui est à l'origine de cette erreur?
OriginalL'auteur rahzark | 2011-04-29
Vous devez vous connecter pour publier un commentaire.
A été touché par le même problème.
Simplement, il s'est passé lorsque nous avons défini une fonction membre virtuelle (dans l' .h fichier d'en-tête), mais pas mise en place (dans le .fichier cpp).
Dans mon cas, la mise en œuvre a été à l'intérieur d'un #define qui l'a empêché d'être compilé. GCC devrait avoir plus de message explicite pour ce genre d'erreur commune comme
Je pense que je dois diagree. déclaration de classe
class Foo;
. Définition de la classeclass Foo{int a;};
. Implémentation de la classe autant que je sache est là, où vous avez définition de la méthode, de sorte que dans .fichier cpp. Merci de voir stackoverflow.com/questions/1410563/....Mais vous parlez de quelque chose de différent. Les deux autres d'entre nous parlions de la fonction de membre de la classe. La spécification de la signature de la fonction membre de la définition de la classe est un déclaration de la fonction.
Ah, oui, bien sûr, Désolé 🙂
OriginalL'auteur neutrino38
nous allons commencer avec l'évidente bits: cela suggère que le rpc n'est pas lié à, ou que les appels sont référencées directement et n'est pas définie (vous peut définir une virtuelle pure).
au-delà, il peut y avoir des différences dans les paramètres de construction - généralement, c'est parce que de symbole par défaut de visibilité (Xcode alias les drapeaux et les paramètres recommandés):
il y a quelques autres paramètres de construction qui pourraient interférer -- idk comment vos projets sont structurées de manière à... cette liste peut être assez grande.
supposons
NO
si vous ne connaissez pas l'intention de l'auteur. également assurer votre exception et rtti info est généré comme dans le dylib, et enfin, vérifiez que les fonctions virtuelles de ce type ont tous des définitions (si la source est disponible).OriginalL'auteur justin