GNU/Linux >> Znalost Linux >  >> Linux

dynamic_cast selže při použití s ​​dlopen/dlsym

Zde jsem našel odpověď na svou otázku. Pokud tomu rozumím, potřebuji zpřístupnit typové informace v 'testc' knihovně 'testd'. Chcete-li to provést pomocí dlopen() , je třeba udělat dvě věci navíc:

  • Při propojování knihovny předejte linkeru -E možnost, abyste se ujistili, že exportuje všechny symboly do spustitelného souboru, nejen ty, které v něm nejsou vyřešeny (protože žádné nejsou)
  • Při načítání knihovny pomocí dlopen() , přidejte RTLD_GLOBAL možnost, abyste zajistili export symbolů pomocí testc jsou také dostupné pro testd

Gcc obecně nepodporuje RTTI přes hranice dlopen. Mám osobní zkušenost s tímto zpackaným pokusem/úlovkem, ale váš problém vypadá jako více stejný. Bohužel se obávám, že se přes dlopen musíte držet jednoduchých věcí.


Linux
  1. Jungledisk selže s chybou Libnotify?

  2. Propojení se starší verzí libstdc++

  3. Jaký je význam caddr_t a kdy se používá?

  1. mkdir -p selže, když adresář existuje

  2. Kompilace se nezdaří s přemístěním R_X86_64_32 proti `.rodata.str1.8' nelze použít při vytváření sdíleného objektu

  3. Když je smazán soubor vytvořený pomocí mkstemp()?

  1. Zkontrolujte použité místo na disku v systému Linux pomocí du

  2. Substituce historie selže při implementaci do skriptu Shell?

  3. Ssh uvnitř Ssh selže s „stdin:Is Not A Tty“?