в коде JNI.

ртываю разделяемую библиотеку (написанную на C) с Java, используя JNA. Общая библиотека написана внутри, но эта библиотека использует функции из другой внешней библиотеки, которая снова зависит от другой внешней библиотеки. Итак, ситуация примерно такая:

ext1 <- ext2 <- внутренний

То есть внутренняя использует внешнюю библиотеку ext2, которая снова использует внешнюю библиотеку ext1. Что я пробовал это:

System.loadLibrary("ext1");
System.loadLibrary("ext2");
NativeLIbrary.loadLibrary("internal",xxx.class);  

Этот подход не работает с «UnresolvedException» при загрузке библиотеки «ext2»; компоновщик жалуется на символы, которые действительно присутствуют в библиотеке "ext1". Итак, кажется, что функция System.loadLibrary () не делает символы из «ext1» глобально доступными? При использовании функции stdlib dlopen () в качестве:

handle = dlopen( lib_name , RTLD_GLOBAL );

Все символы, найденные в @lib_name, будут доступны для разрешения символов при последующих загрузках; Я думаю, что я хотел бы, чтобы было что-то похожее на Java System.loadLibrary ()?

С уважением - Йоаким Хоув

Ответы на вопрос(5)

Ваш ответ на вопрос