Cuando una excepción sale de una función en una DLL, el tiempo de ejecución de mingw32 simplemente llama a
finaliza
std :: inesperado en lugar de propagar la excepción al código que llama a la DLL. ¿Qué soluciones hay para este problema? La DLL y la aplicación que la llama están compiladas con el mismo compilador.Captura de excepciones lanzadas desde DLL
Hay dos mecanismos de excepción diferentes admitidos por mingw32: SJLJ y Dwarf2. ¿Debería uno de ellos trabajar mejor que el otro para esto? Quizás la única opción es cambiar a MSVC o ICC o quizás cambiar las opciones de compilación por sí solos ayudaría?
Observe que ni siquiera catch (...) captará ninguna excepción, ni siquiera los tipos incorporados (throw 1;), por lo que no se trata de la visibilidad del tipo de excepción.
Interesante. ¿Puede ser que cada biblioteca tenga un tiempo de ejecución de C++ estáticamente vinculado? – sharptooth