Java — у меня есть библиотека (.a / .so) и заголовок (.h), как использовать Java для вызова своих функций?

Кто-то прислал мне свою статическую библиотеку (lib.a) и файл заголовка (lib.h), который должен быть написан на C ++, я использовал компилятор gcc для преобразования статической библиотеки (lib.a) в общую библиотеку (.so ). Теперь я хочу использовать Java для вызова библиотеки, чтобы использовать ее функции.

Я пробовал System.load и System.loadLibrary, но я не знаю, как вызывать его функции. Например, я вижу, что есть вызов функции MoveFront (int) из заголовочного файла, и он вернет целое число для статуса.

extern int MoveFront(int);

Есть способ сделать это? Спасибо.

Я использую Ubuntu 13.10, JDK 1.8.0_20, gcc 4.6.3.

1

Решение

Вы не можете вызывать их напрямую в Java

Вы должны построить мост, используя JNI

связать вашу lib.a с bridge.c в libbridge.so
тогда ява может использовать System.loadLibrary("bridge") использовать это

какой-то гид здесь https://www3.ntu.edu.sg/home/ehchua/programming/java/JavaNativeInterface.html

2

Другие решения


По вопросам рекламы [email protected]