簡體   English   中英

從Java類調用C函數JNI

[英]Calling C function JNI from Java Class

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

然后,只需創建此類的對象並調用該方法即可。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM