GNU/Linux >> Linux Esercitazione >  >> Linux

dynamic_cast fallisce se usato con dlopen/dlsym

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() , aggiungi RTLD_GLOBAL opzione, per assicurarsi che i simboli vengano esportati da testc sono disponibili anche per testd

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.


Linux
  1. La sostituzione della cronologia non riesce quando viene implementata nello script della shell?

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

  3. Utilizzo di un DNS secondario quando la ricerca non riesce in primario?

  4. Collegamento con una versione precedente di libstdc++

  5. Qual è il significato di caddr_t e quando viene utilizzato?

Controlla lo spazio su disco utilizzato su Linux con du

Come eseguire il dual boot di qualsiasi distribuzione Linux con Windows e sbarazzartene quando necessario

Il demone dbus ha esito negativo con un simbolo non definito:XML_SetHashSalt FiX

mkdir -p fallisce quando la directory esiste

La compilazione fallisce con il riposizionamento R_X86_64_32 contro `.rodata.str1.8' non può essere utilizzato quando si crea un oggetto condiviso

Quando un file creato con mkstemp() viene eliminato?