我在Android Studio的APP中创建了一个JNI文件夹,复制了所有C文件,但是我只需要调用一个文件:NeuralNetwork.c
,还有NeuralNetwork_initialize.c
和NeuralNetwork_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)
然后,只需创建此类的对象并调用该方法即可。