JNI를 이용해서 C에 있는 소스를 가져다 쓰려고 합니다.
제가 인터넷 해본 결과 헤더파일에서는 자바에서 so파일 호출들어오면 해당 메소드를 선언
(예:JNIEXPORT jint JNICALL Java_com.maluchi.CalcJNITest_CalcJni_Div (JNIEnv *, jobject, jint, jint);)
하고 그걸 c소스에서 h파일을 토대로
(예: JNIEXPORT jint JNICALL Java_com_maluchi_CalcJNITest_CalcJni_Div(JNIEnv *env, jobject obj, jint a, jint b){ 처리 부분 } )
이런식으로 해서 쓰는걸로 알고 있습니다.
근데 제가 궁금한거는 DllExport를 사용 하고 싶은데, 이건 어떻게 해야될지 모르겠습니다. dll파일도 있고 lib파일도 있고 h파일도 있는데 그럼 제가 나머지 C파일만 만들어서 처리부분 만들고 그리고 Android.mk에 헤더파일이랑 C파일만 선언 해주면 되는건가요? 자세하게 어디어디 선언 해주어야 하는지 부탁드립니다.
일단 샘플 몇개 안되기 때문에 다 봐도 되고.. 상황에 맞줘서 조금씩 틀리기 때문에 .. 필요한 부분만 보셔도 됩니다.
Android.mk 파일에 어떻게 flag 값을 세팅하였는지도 확인하시고 c / cpp 로 파일이 정의 되었는지도 확인대상입니다.
c / cpp 혼용이라면 네이밍 맹글링/데코레이션 등으로 심볼링크가 어긋나게 되기 때문에 주의사항도 있습니다.
본인의 load library 상황이 어떤것인지도 정확하게 알고 쓰셔야 하며 ndk 폴더 트리내에서 지원해주는 lib 와 실제
system/lib 에서 적재되어 있는 lib 도 확인하시면 도움이 될것 같습니다.




ndk 를 다운받으셨다면 sample 을 확인하시기 바랍니다.