#c #scala #java-native-interface
#c #scala #java-native-interface
Вопрос:
Я создаю свой C для hello.dll
библиотеки, чтобы использовать ее в scala.
Когда я загружаю ее с System.loadLibrary("hello")
помощью, появляется исключение:
java.lang.UnsatisfiedLinkError: C:Usersducnm4Desktopmdb_scalahello.dll: Can't find dependent libraries.
Путь указывает на hello.dll
правильность, поэтому я не знаю, почему это происходит?
Ответ №1:
У вас есть другая DLL, от которой зависит ваша DLL, и которая не найдена в PATH.
Часто эта другая DLL является средой выполнения MSVC (с именем что-то вроде msvcr * .dll). Используйте средство обхода зависимостей, чтобы точно определить, какие зависимости отсутствуют. Найдите их и скопируйте в папку, в которой находится ваша Dll.
Комментарии:
1. Я так не думаю, я пытаюсь понять JNI и найти несколько руководств по этому поводу, что dll содержит только функцию say hello, так чего же ей не хватает? веб, на который я ссылался, ничего не говорит об этом
2. Если вы не хотите использовать средство обхода зависимостей, отлично, продолжайте поиск в Интернете. Надеюсь, это поможет вам решить вашу проблему.
3. msvcrtxxx.dll это среда выполнения Microsoft c . Все библиотеки DLL c зависят от этого. Однако, если она находится на том же компьютере, на котором вы создали dll, она обязательно должна быть в системе.
4. Я использовал DW и обнаружил, что мне не хватает cygwin1.dll заранее спасибо: D теперь, когда я запускаю его, появляется новая ошибка, я не могу получить доступ к cygwin1.dll ошибка выброса файла EXCEPTION_ACCESS_VIOLATION
5. Это другая проблема для другого вопроса. Используйте отладчик.