Ho trovato qui la risposta alla mia domanda. A quanto ho capito, devo rendere disponibile typeinfo in "testc" alla libreria "testd". Per farlo quando si usa dlopen()
, devi fare due cose in più:
- Quando colleghi la libreria, passa al linker
-E
opzione, per assicurarsi che esporti tutti i simboli nell'eseguibile, non solo quelli che sono irrisolti in esso (perché non ce ne sono) - Quando si carica la libreria con
dlopen()
, aggiungiRTLD_GLOBAL
opzione, per assicurarsi che i simboli vengano esportati datestc
sono disponibili anche pertestd
In generale, gcc non supporta RTTI oltre i limiti dlopen. Ho esperienza personale con questo tentativo / cattura incasinato, ma il tuo problema sembra più o meno lo stesso. Purtroppo, temo che tu debba attenerti a cose semplici su dlopen.