Всем привет.
У меня возникла проблемма - в либах не работают эксепшены, а точнее любой throw вызывает крах всей программы.
Система программы примерно такова - к исполняемому файлу статически линкуется либа, потом создается класс который в этой либе определен, он создает 2 потока и ждет команд.
Фактически компонент создан как мост между виндавсом и линухом для работы разных там служб( итого получаем сервер связи на линуксе а монитор линий на виндах).
Падать не должно. Поставил кучу проверок, но часть компонет написанны всеже с жестким использованием эксепшеном, например эмулятор виндового реестра - он в данном случае и киляет.Читал я тут архив сего форума - там было сказано что если использовать _init\_fini эксепшены отрыбаются.
Но эти функции не используются.компилиться вроде все правильно, по крайней мере когда код был в главной програме - он работал.
Вынес во вне - не пашет.В чом глюк?
>В чом глюк?Если GCC 3.0 и выше, а линкер не GNU, беда может быть
в нововведённом в третью GCC хитро оптимизированном
C++ RTTI + линкер, сей наворот не поддерживающий.Если GCC 2.95.3 и ниже либо линкер гнусный, тогда
без примера кода вряд ли кто-нибудь (кроме разве
знатоков астрологии) чего присоветует.
>Всем привет.
>У меня возникла проблемма - в либах не работают эксепшены, а точнее
>любой throw вызывает крах всей программы.
>Система программы примерно такова - к исполняемому файлу статически линкуется либа, потом
>создается класс который в этой либе определен, он создает 2 потока
>и ждет команд.
>Фактически компонент создан как мост между виндавсом и линухом для работы разных
>там служб( итого получаем сервер связи на линуксе а монитор линий
>на виндах).
>Падать не должно. Поставил кучу проверок, но часть компонет написанны всеже с
>жестким использованием эксепшеном, например эмулятор виндового реестра - он в данном
>случае и киляет.
>
>Читал я тут архив сего форума - там было сказано что если
>использовать _init\_fini эксепшены отрыбаются.
>Но эти функции не используются.
>
>компилиться вроде все правильно, по крайней мере когда код был в главной
>програме - он работал.
>Вынес во вне - не пашет.
>
>В чом глюк?Если Вы используете несколько динамических разделяемых библиотек, то можно проверить -shared-libgcc ключ. Иногда его надо явно указать
Смотрите man gcc
Успехов
--- sas