Я работаю над очень большим проектом.Мой проект содержит так много общих библиотек.Некоторые из исходных файлов (CPP) используются в нескольких общих библиотеках.
Совсем недавно я столкнулся с ошибкой, и мне нужно было выяснить .so имя функции во время ее выполнения.
Например:
Test1.cpp содержит функцию TestMethod ()
Test1.cpp включен в lib1, lib2 и lib5.Существует около 10 библиотек.
Итак, TestMethod присутствует в lib1, lib2 и lib5.
- Я хочу вызвать функцию из TestMethod (), напримерчто во время выполнения программы, когда вызывается TestMethod (), она должна возвращать, является ли она версией lib1 или версией lib2 или версией lib5.
TestMethod () создает объект SubType, который является подклассомсупертипа.SubType и SuperType определены в Test1.cpp.Иногда lib6 / lib7 вызывают TestMethod и получают объект.После того, как они сделаны, lib6 / lib7 вызывают delete для указателя объекта.Но удаление завершается с ошибкой сегментации с вершиной обратной трассировки, говорящей «typeinfo для класса SubType».
[Примечание 1]: я использую библиотеку libc ++.И RTTI не будет работать через общие библиотеки.Так что я подозреваю, что это ведет к проблеме.Я подозреваю, что когда вызывается delete, кажется, что он (delete delete в lib6) пытается получить typeinfo для SubType и не может его получить.
Имея информацию о том, какая библиотека используется, я могу отлаживатькомпиляция, связывание флагов, используемых для подготовки общей библиотеки.
Буду признателен за любые предложения.Спасибо