Задать вопрос

Undefined symbol когда загружаю библиотеку через dlopen?

Пытаюсь написать плагин для одной программы, который бы добавил поддержку Redis. В нём нужно написать несколько функций, которые будут вызываться. Использую github.com/redis/hiredis для этого.


Если просто собрать hiredis, то всё работает нормально. Если же собираю so, то при попытке загрузить через dlopen выдаёт ошибку undefined symbol: redisConnectWithTimeout.


Проблема, скорее всего, в том, как я компилирую это дело: gcc -I./ -fPIC -shared example.c -o plugin.so
nm plugin.so показывает следующее:
U redisConnectWithTimeout
U redisFree


Пробовал также установить hiredis и компилировать с -lhiredis, результат тот же.
  • Вопрос задан
  • 3456 просмотров
Подписаться 2 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Специалист по информационной безопасности + нейросети
    12 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик + ИИ
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Инженер по информационной безопасности
    9 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
@theaspin
Попробуйте добавить флаг -rdynamic при компиляции плагина. С какими флагами вызывается dlopen?
Ответ написан
@theaspin
Еще стоит добавить -ldl при компиляции.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы