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 elRTLD_GLOBAL
opción, para asegurarse de que los símbolos exportados portestc
también están disponibles paratestd
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.