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_GLOBAL
option, pour s'assurer que les symboles exportés partestc
sont é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.