[英]Calling C function JNI from Java Class
我在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)
然后,只需創建此類的對象並調用該方法即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.