GNU/Linux >> Tutoriels Linux >  >> Linux

dynamic_cast échoue lorsqu'il est utilisé avec dlopen/dlsym

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 le RTLD_GLOBAL option, pour s'assurer que les symboles exportés par testc sont également disponibles pour testd

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.


Linux
  1. Jungledisk échoue avec une erreur Libnotify ?

  2. mkdir -p échoue lorsque le répertoire existe

  3. La compilation échoue avec la relocalisation R_X86_64_32 contre `.rodata.str1.8' ne peut pas être utilisé lors de la création d'un objet partagé

  4. Quand un fichier créé avec mkstemp() est supprimé ?

  5. Comment obtenir un fichier avec un nom correct lors de la redirection ?

Comment démarrer n'importe quelle distribution Linux avec Windows - et s'en débarrasser quand vous en avez besoin

Le démon dbus échoue avec un symbole non défini :XML_SetHashSalt FiX

Quelle est la signification de caddr_t et quand est-il utilisé ?

Erreur lors de l'utilisation de l'assistant d'identification Git avec gnome-keyring en tant que Sudo

Ubuntu create-react-app échoue avec l'autorisation refusée

Comment obtenir le pourcentage d'utilisation de la mémoire avec vmstat ?