Die Antwort auf meine Frage habe ich hier gefunden. So wie ich es verstehe, muss ich die in „testc“ verfügbare Typinfo der Bibliothek „testd“ zur Verfügung stellen. Um dies zu tun, wenn Sie dlopen()
verwenden , müssen zwei zusätzliche Dinge getan werden:
- Wenn Sie die Bibliothek verknüpfen, übergeben Sie dem Linker den
-E
Option, um sicherzustellen, dass alle Symbole in die ausführbare Datei exportiert werden, nicht nur diejenigen, die darin nicht aufgelöst sind (weil es keine gibt) - Beim Laden der Bibliothek mit
dlopen()
, fügen Sie dieRTLD_GLOBAL
hinzu Option, um sicherzustellen, dass Symbole vontestc
exportiert werden sind auch fürtestd
verfügbar
Im Allgemeinen unterstützt gcc kein RTTI über dlopen-Grenzen hinweg. Ich habe persönliche Erfahrung mit diesem vermasselten try/catch, aber Ihr Problem sieht eher nach dem gleichen aus. Leider befürchte ich, dass Sie sich in dlopen an einfache Dinge halten müssen.