2014-05-13 4 views
2

JNI 방법에 대한 충돌 유형오류 :이 자바 코드를

JNIEXPORT jstring JNICALL Java_com_marakana_NativeLib_hello(JNIEnv * env, jobject obj, jstring inputs, jstring modems, jstring outputs) 

나는 충돌 유형의 오류가 있습니다

error: conflicting types for 'Java_com_marakana_NativeLib_hello' 
note: previous declaration of 'Java_com_marakana_NativeLib_hello' was here 
make.exe: *** [C:/workspace/marakana//obj/local/armeabi-v7a/objs/ndk_demo/ndk_demo.o] Error 1 

나는 그와 같은 예제를 시도했고 효과가 있었다 (그러나 int로). 무엇이 문제입니까?

+1

오류가 표시되어야합니다. 그리고 네이티브 메소드의 서명을 변경했다면,'javah'를 사용하여 헤더 파일을 재생성해야합니다. 그렇지 않으면 코드가 일치하지 않습니다. – Petesh

+0

감사합니다. 그것은 내가 다시 생성 할 때 h 파일이 변경되지 않기 때문에 java 파일을 만드는 것을 잊어 버렸습니다. –

답변

1

jni 코드를 빌드 할 때 javah을 사용하여 생성 된 헤더 파일이 .class 파일의 native 선언과 일치하는지 확인해야합니다. 네이티브 메소드 서명을 변경하는 경우

, 당신은에 있습니다 :

  • 이 있는지 확인
  • 이 결과 .class 파일에서 .h 파일을 다시

    1. 다시 컴파일 .java 파일이 정의의 서명에 .c 파일은 파일의 선언과 일치합니다.

    위의 단계 중 하나라도 생략하면 .c 파일을 다시 컴파일 할 수 없거나 VM에로드되지 않는 비 기능적 원시 라이브러리로 끝날 수 있습니다.

  • 관련 문제