从Java类调用C函数JNI

时间:2017-11-07 12:58:16

标签: java c android-studio compilation java-native-interface

我在Android Studio的APP中创建了一个JNI文件夹,我复制了所有的C文件,但我只需要调用一个:NeuralNetwork.c,还有NeuralNetwork_initialize.cNeuralNetwork_terminate.c 。我已经有了我的CMakeFile。

我知道我需要用这样的东西创建另一个C文件(它被称为main.c):

#import <jni.h>
JNIEXPORT jstring JNICALL Java_com_dsp_testapp_NewRecordingActivity_getString(JNIEnv *env, jobject thiz) {
return (*env)->NewStringUTF(env, "Hello World from C!");
}

但是,我需要它专门调用我的NeuralNetwork.c,我知道我也必须使用初始化并以某种方式终止,但不是真的知道如何。

现在,在我的Java课程中,我做到了这一点:

System.loadLibrary("my_src");

my_src是我的CMake文件生成的库的名称。 但我不知道如何调用我的main.c函数。

  • NeuralNetwork.c只给我一个双:1或0,有5个向量输入,长度为256.

你能帮帮我吗?

1 个答案:

答案 0 :(得分:0)

您基本上需要创建一个Java类,其类别名称(类+包)与您在库中使用的名称相对应(com.dsp.testapp.NewRecordingActivity)。然后,您需要将方法声明为native

public native getString(Object obj)

然后,只需创建此类的对象并调用该方法。