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

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, результат тот же.
  • Вопрос задан
  • 3436 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 2
@theaspin
Попробуйте добавить флаг -rdynamic при компиляции плагина. С какими флагами вызывается dlopen?
Ответ написан
@theaspin
Еще стоит добавить -ldl при компиляции.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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