Jai une grande collection de bibliothèques qui se compilent correctement mais qui nont pas de lien. Jutilise Visual Micro pour Visual Studio 2015. Voici la collection complète de messages derreur:
CommandPattern3.cpp.o:In function `DualMotorRomeo DualMotorRomeo.h:undefined reference to `vtable for DualMotorRomeo DualMotorRomeo.h:undefined reference to `vtable for DualMotorRomeo CommandPattern3.cpp.o:In function `__static_initialization_and_destruction_0 CommandPattern3.ino:undefined reference to `DualMotorRomeo ~DualMotorRomeo() collect2.exe*:error: ld returned 1 exit status Error compiling for board Arduino/Genuino Mega w/ ATmega2560 (Mega 2560)
Jai parcouru le code avec un peigne fin, mais ne peut pas voir quelles références ne sont pas définies.
Existe-t-il un utilitaire Windows 10 qui peut examiner les vTables et maider à trouver ce qui manque?
La base de code est trop volumineuse pour être publiée, mais je peux fournir un fichier ZIP contenant tout le code à quiconque veut aider.
Commentaires
- Léditeur de liens sefforce de vous aider. Vérifiez DualMotorRomeo.h et quil existe un destructeur (peut-être besoin dêtre virtuel en fonction de lhéritage?).
Réponse
Je nai pas le fichier den-tête pour DualMotorRomeo
, mais léditeur de liens dit quun destructeur a été déclaré (~DualMotorRomeo()
) dans len-tête de la classe, mais aucun destructeur na été défini. Si vous navez pas écrit DualMotorRomeo
alors la bibliothèque doit être mise à jour.
Jusque-là, simplement ajoutez ce qui suit à lun de vos fichiers source:
DualMotorRomeo::~DualMotorRomeo() { } // DualMotorRomeo::~DualMotorRomeo()
Cela corrigera également les erreurs de léditeur de liens vtable
– le vtable
sera inclus dans le fichier compilé avec ceci déclaré.