Нативный интерфейс Java с любым произвольным кодом C - PullRequest
4 голосов
/ 28 мая 2009

У меня есть .dll, которая была предоставлена, и мне нужно взаимодействовать с ней, используя Java.

Нужно ли переписывать C, чтобы использовать типы JNI, представленные в jni.h? как видно из примера jni Sun. В противном случае, Как я могу объявить нативную функцию моей функции Java для передачи и получения указателей?

спасибо

Ответы [ 3 ]

4 голосов
/ 28 мая 2009

Вы можете найти JNA полезным

"JNA обеспечивает программам Java легкий доступ к собственным разделяемым библиотекам (DLL в Windows) без написания чего-либо, кроме кода Java - не требуется JNI или собственный код. Эта функциональность сопоставима с типами Windows Platform / Invoke и Python. динамический во время выполнения без генерации кода. "

3 голосов
/ 28 мая 2009

В некотором смысле, да.

В большинстве случаев вы просто пишете небольшую dll-оболочку с функциями, которые будут выполнять преобразования типов и делегировать соответствующие функции в "настоящей" DLL.

2 голосов
/ 28 мая 2009

Конечно, вы можете переписать код C, но нередко пишите обертку (технически, используя шаблон Facade или Bridge ) для кода C. Вы пишете код, который соответствует вашим ожиданиям в Java, и этот код вызывает ваш существующий код C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...