Краткий ответ: Вы не можете
Думая об этом снова.
Исходные операторы верны, но вы также должны помнить, что dlopen () является функцией библиотеки C. C не поддерживает исключения. Таким образом, исключение, которое переходит от кода C ++ к C (Ваш глобальный объект обратно в код dlopen ()) также приведет к завершению приложения.
См. Здесь: Почему деструктор не вызывается по исключению?
Это ситуации, при которых создание исключения приведет к прекращению работы приложения. Ваша конкретная ситуация покрыта:
Исключение ускользает от конструктора / деструктора нелокальной статики (т. Е. Глобальной)