Я использую С++ в Linux. Я хочу динамически связать коллекцию неизвестных общих библиотек. Мне нужен мой код для обнаружения всех общедоступных функций, предоставляемых общей библиотекой, и строковых имен этих функций. Как выполнить эту задачу?
Обнаружение общей библиотеки
comment
Нет смысла связывать этот неизвестный набор функций: вы не можете их вызывать (поскольку вы не знаете, какие параметры они ожидают), так что вы собираетесь делать с результатом dlopen()?
- person Employed Russian   schedule 27.01.2009
comment
Итак, вы хотите знать, как работает утилита nm?
- person Die in Sente   schedule 30.01.2009
Ответы (1)
Насколько я знаю, нет функции glibc для перечисления всех функций общедоступного интерфейса для файла .so. Вы можете обратиться к libelf, чтобы прочитать все символы из динамического файла. Libelf находится здесь http://www.mr511.de/software/. После того, как вы найдете символ, вы можете использовать dlopen и dlsym для его загрузки.
person
Community
schedule
24.01.2009