Другая возможность состоит в том, что ваши нативные функции в Java не совпадают с функциями в библиотеке. Существует очень четко определенное соглашение об именах для функций JNI.
Например, если у вас есть функция в java, которая должна вызывать библиотечную функцию c / c ++:
package my.packagename;
public class Test {
static {
System.loadLibrary("Sample");
}
public native void testJNI(int arg1);
}
Соответствующая функция в c или c ++ ДОЛЖНА быть (при условии, что имя вашего пакета - "com.packagename"):
JNIEXPORT void JNICALL Java_my_packagename_Test_testJNI(JNIEnv* env, jobject obj, jint arg1) {
// ... code here
}
Причина, по которой я прошел, заключается в том, что если имена функций не совпадают, выдается ошибка UnsatisfiedLinkError.