У меня есть приложение, часть которого использует общие библиотеки. Эти библиотеки компонуются во время компиляции.
Во время выполнения загрузчик ожидает, что общий объект будет в LD_LIBRARY_PATH
, если он не найден, все приложение вылетает с ошибкой «невозможно загрузить общие библиотеки». Обратите внимание, что нет гарантии, что клиент будет иметь библиотеку, в этом случае я хочу, чтобы приложение оставило подходящее сообщение об ошибке, и независимая часть должна работать правильно.
Для этой цели я использую dlsym()
и dlopen()
для использования API в общей библиотеке. Проблема в том, что если у меня есть много функций в API, я должен получить к ним доступ по отдельности, используя dlsym()
и ptrs, что в моем случае приводит к повреждению памяти и сбоям кода.
Есть ли альтернативы для этого?