2017-11-07 2 views
0

Android Studio에서 APP에 JNI 폴더를 만들었고 모든 C 파일을 복사했지만 하나만 호출해야합니다 : NeuralNetwork.c, NeuralNetwork_initialize.cNeuralNetwork_terminate.c도 있습니다. 이미 CMakeFile을 가지고 있습니다. 내가 사용해야도 알고, 내가 특별히 내 NeuralNetwork.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!"); 
} 

그러나 :

은 내가 이런 걸 (이 main.c를 불렀다)와 또 다른 C 파일을 작성해야합니다 알고 어떻게 든 초기화하고 끝내지만, 실제로 어떻게 알지는 못합니다.

System.loadLibrary("my_src"); 

my_src 내 CMake 파일을 생성 내 라이브러리의 이름입니다

이제 내 자바 클래스에서 나는 이런 짓을. 하지만 내 main.c 함수를 호출하는 방법을 모르겠습니다. 당신이 좀 도와 주 시겠어요 256

의 길이가 5 벡터 입력을 1 또는 0이 있습니다

  • NeuralNetwork.c 나에게 단지 배를 준다?

답변

0

기본적으로 라이브러리 (com.dsp.testapp.NewRecordingActivity)에서 사용한 것과 일치하는 정규화 된 이름 (클래스 + 패키지)을 사용하여 Java 클래스를 만들어야합니다. 그럼 당신은 native 같은 방법을 선언해야합니다

public native getString(Object obj)

이후, 바로이 클래스의 객체를 생성하고 메서드를 호출합니다.

+0

괜찮 았어.하지만 C 클래스에서 호출해야하는 C 함수를 어떻게 지정 했습니까? – user8559076

+0

나는 그 질문을 이해할 수 없다고 생각합니다. 'C' 코드에서'C' 함수를 호출하고 싶다면 함수를 호출하면됩니다 (헤더 파일이 포함되어 있다고 가정). –

+0

"Java에서 호출 할 C 함수를 어떻게 알 수 있습니까?"라는 질문을하면 C 함수 이름에서 해당 함수를 디코딩합니다. 기본적으로 Java_package_name_with_dots_replaced_by_underscores_methodName을 호출합니다. –

관련 문제