| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 - будет экспортировано два имени функции - с суффиксом и без. |