Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Проблема с JNI: не находит функцию


Автор: blur 19.1.2014, 20:51
Доброго времени суток,

Помогите пожалуйста с проблемкой. У меня не получается вызвать функцию из длл, хотя сама длл библиотека загружена нормально. В джаве функция объявлена:
private static native void createNativeManager();

в библиотеке функция видна как:
Java_org_zwave4j_Manager_createNativeManager@8

и в логе вот такая ошибка:
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.zwave4j.Manager.createNativeManager()V




Автор: Samotnik 20.1.2014, 22:11
С JNI не работал (
Могу лишь ссылками помочь, например вот похожая проблема
http://stackoverflow.com/questions/1358541/jni-hello-world-unsatisfied-link-error

Автор: sergeygleba 21.1.2014, 03:10
Скорее всего проблема в том, что MinGW добавляет stdcall суффиксы (@nn) в имена экспортируемых функций, а Java ожидает имена без суффиксов. 
Можно попробовать слинковать с параметрами -Wl, --kill-at или -Wl, --add-stdcall-alias

-Wl - передает параметр линкеру
--kill-at - указывает, что необходимо удалить @nn из имени функции
--add-stdcall-alias - будет экспортировано два имени функции - с суффиксом и без.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)