У меня есть исполняемый проект, который использует общую библиотеку, которая включает в себя статическую библиотеку. Затем из исполняемого файла я пытаюсь загрузить другую разделяемую библиотеку с помощью dlopen
. Эта библиотека найдена, но она не может найти символы из статической библиотеки.linux dlopen не может найти символ статической библиотеки
Вот структура:
-- SHARED LIB 1
-- (compiled with) Static Lib 1
-- EXECUTABLE
-- SHARED LIB 1
-- dlopen SHARED LIB 2 XX ERROR: SHARED LIB 2 cannot find symbols of Static Lib 1
SHARED LIB 1
Как и SHARED LIB 2
связаны с /usr/lib
.
Кажется, что я пропускаю несколько флагов.
Как я могу решить эту проблему?
Ваша вторая разделяемая библиотека должна загрузить статическую библиотеку как разделяемую библиотеку, или быть скомпилирован с ним в качестве статической библиотеки. Это приводит к тому, что он становится статичным. – Davislor
Вы должны объявить символы 'extern 'C'' (или вам нужно использовать их искаженные имена). Вы это делаете? – Galik