Ошибка при загрузке собственной библиотеки в scala

#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. Это другая проблема для другого вопроса. Используйте отладчик.