2014-09-25 7 views
1

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

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

extern int MoveFront(int); 

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

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

+0

Смотрите здесь: https://github.com/twall/jna/blob/master/www/GettingStarted.md – RobAu

+0

Но ЮНА не поддерживает C++. В этом случае есть и другие подобные инструменты, такие как [JavaCPP] (https://github.com/bytedeco), которые работают с C++. –

ответ

2

Вы не можете назвать их непосредственно в Java

Вы должны построить мост с помощью JNI

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

некоторые руководство здесь https://www3.ntu.edu.sg/home/ehchua/programming/java/JavaNativeInterface.html