JNI - System.LoadLibrary () находит неправильную зависимую DLL - PullRequest
0 голосов
/ 12 августа 2010

Я связываю нативную библиотеку C ++ с моим приложением Java, используя JNI.Я загрузил свою библиотеку, используя System.loadLibrary (), и все, кажется, работает.Я добавил функциональность в мою C ++ DLL, которая теперь делает вызовы во множество других DLL из сторонних программных систем.К сожалению, одна из этих библиотек называется ZIP.dll.Операция java loadLibrary находит эту зависимую dll в / jre / bin перед поиском в каталоге моего проекта, поэтому она пытается использовать эту.Два dll не идентичны, поэтому я получаю UnsatisfiedLinkError, говорящую, что указанная процедура не может быть найдена.

Есть ли способ указать java, где искать зависимые библиотеки при загрузке DLL?

Ответы [ 2 ]

2 голосов
/ 12 августа 2010

Я полагаю, что System.load с полным именем пути, а не System.loadLibrary, должно сработать.

0 голосов
/ 09 сентября 2010

Я не думаю, что можно загружать две разные библиотеки DLL с одинаковыми именами одновременно. Вы можете либо изменить порядок на пути так, чтобы сначала загружался правильный ZIP.dll (это может затем вызвать проблемы с jvm), либо вы можете переименовать файл ZIP.dll в другое. Переименование вашего ZIP.dll, вероятно, самый простой способ.

...