Java: загрузка разделяемых библиотек с зависимостями

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

ext1 <- ext2 <- internal

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

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

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

handle = dlopen( lib_name , RTLD_GLOBAL );

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

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

8
задан Isa_R 15 February 2019 в 12:27
поделиться