AndroidスタジオのAPPにJNIフォルダを作成しました。私はすべてのCファイルをコピーしましたが、NeuralNetwork.c
の1つだけを呼び出す必要があります。NeuralNetwork_initialize.c
とNeuralNetwork_terminate.c
もあります。私はすでにCMakeFileを持っています。私は、この(それはmain.cのと呼ばれる)のようなもので、別のCファイルを作成する必要があります知っているJavaクラスのC関数JNIを呼び出す
:
#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
を呼び出す必要があり、私が使用する必要がありますも知っています何らかの形で初期化して終了しますが、実際にはどのように知っているのでしょうか。
System.loadLibrary("my_src");
my_srcは私のcmakeのファイルを使用して生成された私のライブラリの名前です:
さて、私のJavaクラスでは、私はこれをしませんでした。 しかし私はmain.c
機能を呼び出す方法を知らない。
NeuralNetwork.c
は私だけでダブルを与える:1、または0と256
の長さと5つのベクトル入力を持っているあなたはこれで私を助けていただけますか?
これは問題ありませんが、私のcクラスではどのようにして呼び出す必要のあるC関数を示しましたか? – user8559076
私はその質問を理解するとは思わない。 'C'コードの中から' C'関数を呼びたい場合は、関数を呼び出してください(そのヘッダファイルがインクルードされていると仮定します)。 –
「JavaはどのようにしてどのC関数を呼び出すかを知っていますか?」と尋ねると、C関数名からそれをデコードします。基本的には、 'Java_package_name_with_dots_replaced_by_underscores_methodName'を呼び出します。 –