서적에 관한 질문 및 오류 등을 문의 할 수 있으며, 저자로부터 직접 답변을 받을 수 있습니다.

안녕하십니까?

 

JNI 문법에 의문 사항이 생겨 문의 드립니다.

 

NDK 책 110페이지 plus 예제에 보면

 

자바에서 c routine 호출 시에 아래와 같이

 

JNIEXPORT jint JNICALL Java_xxx_xxx_plusForJNI(...)

{

    ......

}

 

이렇게 되어 있는 부분이 있고

 

책 116페이지 two-libs 예제에서는 자바에서 c routine 호출 시에 아래와 같이

 

jint Java_xx_xx_add(....)

{

   ....

}

 

되어 있습니다.

 

위의 코드와 같이 two-libs 예제에서 자바에서 c routine 호출 시에  JNIEXPORT JNICALL을 키워드로 사용하지 않고 있습니다.

 

문의 점은  JNIEXPORT JNICALL의 사용 유무에 차이점이 있는 것인지 알고 싶습니다.

 

어설픈 질문 끝까지 읽어 주셔서 감사합니다. ^^

 

 

답변 기다리겠습니다.

 

즐거운 하루 보내십시오.

 

 

 


죽유

2013.01.08 20:31:38
*.95.154.133

추가로 jni.h 파일을 살펴 보았습니다.

지금 저의 ndk 개발 환경 중심으로 말씀드리면,

파일 path는 android-ndk-r8d/platforms/android-8/arch-arm/usr/include/jni.h 입니다.

이 헤더 파일(jni.h)을 열어 보면 아래와 같이 되어 있습니다.

 

(중략)

#define JNIIMPORT

#define JNIEXPORT __attribute__ ((visibility ("default")))

#define JNICALL

(중략)

 

위의 코드를 보면 JNIIMPORT 와 JNICALL은 아무 의미가 없는 것으로 사료되며

JNIEXPORT는 so 파일을 만들 때 데이터 심볼을 보여즐 것이냐 아니면 보여 주지 않을 것이냐 하는 것으로 이해 됩니다.

따라서 two-libs 예제에서도 제 판단으로는 JNIEXPORT를 삽입해야 할 것 같은데 이 키워드 없이도 컴파일이 되는 것 같습니다.

조금 이해가 않되는 부분입니다.. ^^

아시는 분 계시면 명쾌한 답변 기다리겠습니다.

즐거운 하루 보내십시오.

전호철

2013.01.09 01:00:33
*.35.2.206

생략해도 무방합니다.

javah 로 헤더를 만들면 자동으로 붙는 매크로입니다.

 

두개 모두 생략해도 전혀 문제 없습니다.

죽유

2013.01.09 16:34:37
*.95.154.133

답변 감사합니다. 전호철님.

 

어제 위의 두가지 경우를 다 테스트해 보았습니다.

 

말씀하신대로 생략을 해도 무방했습니다.

 

제 테스트에 따르면  JNIEXPORT를 생략하면 디폴트로 visibility가 동작하는 것으로 예상됩니다.

 

제 우매한 질문에 신경써 주셔서 감사합니다.

 

즐거운 하루 보내십시오.

List of Articles
번호 제목 글쓴이 날짜sort 조회 수
» 문의드릴 것이 또 생겼습니다. [3] 죽유 2013-01-08 4485
42 apk uploading timeout에 대해 문의 드립니다. [2] 죽유 2013-01-10 5374
41 정오표 정리 제안 [4] mechatrosens 2013-01-10 5117
40 NEON관련 좋은 참고 문서가 있을까요? [7] 죽유 2013-01-10 5392
39 NDK를 이용한 camera 제어 예제에 대해 문의 드립니다. [7] 죽유 2013-01-11 8050
38 카메라로부터 프래임 데이터 추출하는 예제 입니다. file [1] 죽유 2013-01-24 5383
37 OpenGL 책p168 예제 질문드립니다. Android홀릭 2013-02-06 5413
36 GPIO 컨트롤 하기 예제 중 insmod에 관하여 문의드립니다. [2] 미누유희 2013-02-13 5126
35 네이티브 스레드로 자바 콜백 만들기 질문드립니다. [2] 조재영 2013-02-14 5661
34 예제를 따라하던 중 Android.mk 파일로 APK파일 생성 후 설치시 ... [6] 김바람 2013-03-05 12338
33 PDK를 이용하여 안드로이드 프레임워크 so파일 참조에 관해서 질문있... [7] 김바람 2013-03-07 26815
32 [예제12.SDL] Android 에서 SDL 사용하는 예제 실행 안됨 문의... [7] 둘리 2013-03-12 5609
31 3rd party app에서 프레임워크 수정된 걸 적용시키려면 어떻게 해야... [3] 김바람 2013-03-17 4838
30 MediaServer 에 관련해서 질문드려요 [10] 김바람 2013-03-27 6580
29 [압축된 07-TestSkia 예제파일 올려주세요] [1] 밥줘잉 2013-05-23 5664
28 안드로이드 4.2 프레임버퍼 접근 질문드려요~! [6] 범내 2013-07-30 5947
27 surfaceflinger에서 화면을 dump뜨는 메카니즘에 대해서... 김바람 2013-08-19 5134
26 여러 분들이 말씀하신 것처럼 책(NDK)의 예제코드를 올려주실 수 없... [2] 트론 2013-08-24 5255
25 ndk 38페이지 질문_repo file [1] 제임스59 2013-08-28 12060
24 NDK 책내용중에 3.11 외부 라이브러리 활용하기 에서 질문 드립니... file [5] 엽스 2013-08-30 5590

사용자 로그인