J'ai trouvé la réponse à ma question ici. Si je comprends bien, je dois rendre le typeinfo disponible dans 'testc' disponible pour la bibliothèque 'testd'. Pour ce faire lors de l'utilisation de dlopen() , deux choses supplémentaires doivent être faites :
- Lors de la liaison de la bibliothèque, passez le lien
-E, pour s'assurer qu'il exporte tous les symboles vers l'exécutable, pas seulement ceux qui n'y sont pas résolus (car il n'y en a pas) - Lors du chargement de la bibliothèque avec
dlopen(), ajoutez leRTLD_GLOBALoption, pour s'assurer que les symboles exportés partestcsont également disponibles pourtestd
En général, gcc ne prend pas en charge le RTTI à travers les frontières dlopen. J'ai une expérience personnelle avec cet essai / rattrapage gâché, mais votre problème ressemble plus à la même chose. Malheureusement, je crains que vous n'ayez besoin de vous en tenir à des choses simples sur dlopen.