Je suis en train d'écrire un assez grand C++ partagée la bibliothèque d'objets, et ont rencontré un petit problème qui rend le débogage d'une douleur:
Si je définis une fonction/méthode dans un fichier d'en-tête, et oublier de créer un stub pour elle (en cours de développement), depuis que je suis bâtiment comme un objet partagé bibliothèque plutôt que d'un exécutable, pas d'erreurs apparaissent au moment de la compilation de me dire que j'ai oublié de la mettre en fonction. La seule façon que je trouve quelque chose est mauvais, c'est au moment de l'exécution, lorsque finalement une demande de liaison à l'encontre de cette bibliothèque tombe sur un "undefined symbol' erreur.
Je suis à la recherche d'un moyen facile de vérifier si j'ai tous les symboles dont j'ai besoin au moment de la compilation, peut-être quelque chose que je peux ajouter à mon Makefile.
Une solution je suis venu avec est de lancer la compilation de la bibliothèque par le biais nm -C -U
pour obtenir un demangled liste de tous les indéfini références. Ce problème est également livré avec la liste de toutes les références qui sont dans d'autres bibliothèques, comme la GLibC, ce qui bien sûr va être liées avec cette bibliothèque lors de l'application finale est mis en place. Il serait possible d'utiliser la sortie d' nm
de grep
à travers tous mes fichiers d'en-tête et de voir si l'un des noms correspondant.. mais cela semble fou. Ce n'est sûrement pas rare de problème et il y a une meilleure façon de le résoudre?