Вкратце - скорее всего нет. Кроссплатформенно - еще более сомнительно.
Как именно крашится либа? Я так понял, это не вылетевшее C++ исключение, а что-то вроде коррапта памяти (хотя в самой либе может быть гадость вроде if(fail){exit(-1);}, с чем уже работать проблематично). В теории, можно для каждой платформы это обработать. Если сходу - как это можно реализовать для винды:
На самом деле выносим работу с либой в отдельный поток. Когда она сделает что-то плохое (к примеру, попытается читать освобожденную память) будет выброшено SEH исключение, для которого мы можем зарегистрировать обработчик (using a vectored exception handler в msdn). В хендлере можно было бы проверить, что исключение выброшено именно из треда этой либы и если это действительно так - просто грохнуть этот тред. Но даже если сработает это крайне плохой метод - либа захватывает какие-то ресурсы и нет никакой гарантии, что она корректно их освободит при падении треда (да и что приложение вообще останется в согласованном состоянии - кто знает, почему она падает - может, там вообще половина памяти перед этим мусором перезаписывается). Короче, решение с потоком - это потенциально нестабильная работа всего приложения.
Для изоляции памяти и использования ресурсов как раз и существуют процессы, как бы не хотелось от них уйти :)
Так что решение с отдельным процессом, который будет изолировать все болячки либы и не давать им распространиться на все приложение таки самое безопасное.