我在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。


你能帮我这个忙吗?

最佳答案

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

public native getString(Object obj)

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

09-13 00:39