Вызов из кода Java в .net DLL через JNI не возвращается - PullRequest
0 голосов
/ 08 октября 2019

Я написал оболочку JNI для DLL-файла .net (DLL была обновлена ​​соответствующим образом), но решение застряло, как только вызов функции DLL.

У меня есть .net DLL, которая используетсяполучить доступ к сканеру отпечатков пальцев SecuGen. Работает нормально при использовании в .net проекте. Теперь я хочу использовать его в проекте JAVA. Я обновил файл dll в соответствии с требованиями JNI. Он не возвращается после вызова функции в dll, то есть элемент управления покидает JVM, и, следовательно, я не могу отладить то, что не так или происходит. Редактировать: я наконец-то смог вызвать одну из функций из DLL (более простой). Но все же, когда я вызываю CaptureImage, он просто зависает.

1 Ответ

0 голосов
/ 08 октября 2019

То, что вы пытаетесь сделать, не сработает. .net DLL не могут быть использованы напрямую из Java с JNI. JNI может загружать только собственные библиотеки DLL.

Вам нужна dll или библиотека «bridge», то есть нативная dll, которая загружает для вас .net. Затем вы используете ту нативную DLL из JNI.

Взгляните на этот проект с открытым исходным кодом: JNI4Net: мост между Java и .NET (внутрипроцессный, быстрый, объектно-ориентированный, с открытым исходным кодом)

Кажется, делает то, что вам нужно.

...