GNU/Linux >> Tutoriales Linux >  >> Linux

dynamic_cast falla cuando se usa con dlopen/dlsym

Encontré la respuesta a mi pregunta aquí. Según tengo entendido, necesito hacer que typeinfo esté disponible en 'testc' disponible para la biblioteca 'testd'. Para hacer esto cuando se usa dlopen() , se deben hacer dos cosas adicionales:

  • Al vincular la biblioteca, pase al vinculador el -E opción, para asegurarse de que exporta todos los símbolos al ejecutable, no solo los que no están resueltos en él (porque no hay ninguno)
  • Al cargar la biblioteca con dlopen() , agrega el RTLD_GLOBAL opción, para asegurarse de que los símbolos exportados por testc también están disponibles para testd

En general, gcc no es compatible con RTTI a través de los límites de caída. Tengo experiencia personal con este intento/captura desordenado, pero su problema parece más de lo mismo. Lamentablemente, me temo que debes apegarte a cosas simples en dlopen.


Linux
  1. ¿La sustitución del historial falla cuando se implementa en el script de Shell?

  2. Ssh Inside Ssh falla con "stdin:Is Not A Tty"?

  3. Enlace con una versión anterior de libstdc++

  4. mkdir -p falla cuando existe un directorio

  5. La compilación falla con la reubicación R_X86_64_32 contra `.rodata.str1.8' no se puede usar al crear un objeto compartido

¿Cuándo fue la última vez que usó Windows?

Cómo realizar un arranque dual de cualquier distribución de Linux con Windows y deshacerse de ella cuando sea necesario

El demonio dbus falla con un símbolo indefinido:XML_SetHashSalt FiX

sudo sin contraseña cuando se inicia sesión con claves privadas SSH

¿Cómo obtener el% de uso de memoria con vmstat?

La configuración de la afinidad del proceso en ejecución con el conjunto de tareas falla