Как загрузить зависимые библиотеки DLL в Java?

#java #dll #native #jna

#java #dll #родной #jna

Вопрос:

У меня есть две библиотеки DLL, C:foox.dll и C:bary.dll , где x.dll зависит от y.dll (т. Е. Реализация функций в x вызовет функции в y).

В приложении Java, когда я загружаюсь x.dll с помощью JNA, что мне нужно настроить, чтобы гарантировать, что я не получу UnsatisfiedLinkException ?

В настоящее время я настраиваю jna.library.path на C:foo , но, похоже, этого недостаточно. Включение обоих C:foo и C:bar в java.library.path также не помогает.

Комментарии:

1. Вы могли бы попробовать вызвать System.loadLibrary("y")

2. Вам вообще не нужно их загружать. Зависимая библиотека просто должна быть на пути, а не java.library.path .

Ответ №1:

Обычно вы можете вызвать System.load("/name.dll") с указанием пути к вашей зависимой библиотеке до выполнения вызова JNA для загрузки основной.

System.loadLibrary("name") будет работать, если библиотека включена java.library.path и соответствует ожидаемым соглашениям об именовании.