Я создал C++ функцию для сложения двух чисел:JNI Связывание в Java
#include <iostream>
extern "C" __declspec(dllexport)
int add (int x, int y)
{
return x + y;
}
и создал два класса в Java, чтобы получить доступ к нему с помощью ЮНА:
package jniTest;
public class jnitest {
public static void main(String[] args) {
System.setProperty("java.library.path", "C:/cygwin/home/abc");
System.loadLibrary("add");
importClass lib = importClass.INSTANCE;
System.out.println(lib.add(10, 20));
}
}
Главный тестовый класс:
package jniTest;
import com.sun.jna.Library;
import com.sun.jna.Native;
public interface importClass extends Library
{
importClass INSTANCE = (importClass) Native.loadLibrary("add", importClass.class);
int add(int x, int y);
}
Я получаю следующее сообщение об ошибке: "Исключение из потока" main "java.lang.UnsatisfiedLinkError: no add in java.library.path «
называется Ваш файл библиотеки "добавить"? – immibis
Я предполагаю, что файл библиотеки - это файл C++, который я создал для добавления двух функций, и имя файла добавляется. Это верно? жаль, что я новичок в этом домене. – bna
Нет, вам нужно скомпилировать его, как и любая другая программа или библиотека C++. – immibis