Как использовать C API в Java?JNI? - PullRequest
0 голосов
/ 28 февраля 2011

Я строю проект J2EE, в котором я хотел бы использовать API, который доступен только на C. Я думал об использовании JNI для этого, но после быстрого взгляда на это руководство Похоже, что для того, чтобы использовать JNI, мне нужен исходный код (файлы .c) для компиляции некоторой "библиотеки JNI".

В моем случае API-интерфейс только компилирует.h с подписью всех методов и уже скомпилированных .dll (или .so).

Как я могу это сделать?

Спасибо!

Ответы [ 4 ]

4 голосов
/ 28 февраля 2011

JNA - это библиотека на основе JNI, которая позволяет вызывать обычные функции C без необходимости использования JNI-специфической оболочки для каждой из них.

1 голос
/ 28 февраля 2011

Выезд JNA . Это позволяет вам использовать .DLL напрямую. Все, что вам нужно сделать, это написать интерфейс Java с теми же функциями, которые вам нужны от .DLL.

0 голосов
/ 28 февраля 2011

JNI предлагает довольно низкоуровневый API для сопряжения вашего Java-кода с нативным кодом. Если вы в порядке с выплатой денег, Jinvoke выглядит довольно неплохой альтернативой, которая не требует написания кода на C / C ++. Плюсом здесь является то, что вы получаете полную платную поддержку. Если вам это не нужно, вы можете пойти с JNA. Все, кроме JNI IMO ...

0 голосов
/ 28 февраля 2011

Создайте небольшую оболочку C для собственной библиотеки, скомпилируйте ее в .dll / .so.

Для каждой необходимой функции в существующем C api создайте одну JNI-совместимую функцию C, которая просто вызываетреальный API.

...