dlopen sur la bibliothèque avec un membre statique qui lève une exception dans le constructeur – entraîne l’abandon

J’essaie de charger une bibliothèque dynamic en utilisant la fonction dlopen. Cette bibliothèque contient un object statique, qui lève une exception dans son constructeur. J’ai un bloc “try-catch (…)” autour de l’appel dlopen, mais il n’attrape pas l’exception et je vois juste “Abort” imprimé.

Comment puis-je attraper cette exception?

Réponse courte: Vous ne pouvez pas

En y repensant
Les instructions d’origine sont conservées, mais vous devez également vous rappeler que dlopen () est une fonction de bibliothèque C. C ne supporte pas les exceptions. Ainsi, en lançant une exception qui passe du code C ++ au code C (Votre object global retourne au code dlopen ()), cela provoquera également la fin de l’application.

Voir ici: Pourquoi le destructeur n’est pas appelé à exception?

Ce sont les situations dans lesquelles lancer une exception mettra fin à l’application. Votre situation spécifique est couverte par:

Une exception échappe au constructeur / destructeur d’un statique non local (ie global)