블로그 검색:
분류 전체.. (186)
나의 관심사 (152)
기술 분석/.. (31)
Safari  개발자 인생  Microsoft  Google  ubuntu  안드로이드  Windows Presentation Foundation  java  심리  우분투 
 [이클립스RCP(..
└>월풍도원(月風..
 [이클립스RCP(..
└>월풍도원(月風..
 브로드웨이 넘..
└>buoy : 부표(..
 눈물을 마시는..
└>Sputnik의 무..
«   2012/02   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      
+ Total : 70,512
+ Today : 7
+ Yesterday : 64
  

 

 

 

Inner Class 와 Nested Class 의 JNI Naming Rule
+   [기술 분석/동향/Java]   |  2009/02/03 10:58  
Inner Class 와 Nested Class 에서는 JNI Naming Rule 이 어떻게 되는지에 대해 누군가 물어와서 정리를 해봤습니다.

일단 Java 5 버전의 javah 에는 inner class 관련 버그가 있다고 합니다. $ 표시가 빠지는 문제인데요. 다음 URL 을 보시면 해당 내용을 보실 수 있고요.
http://x86.sun.com/thread.jspa?threadID=5115982&messageID=9400182
이 문서에 보면 다음 URL 에 JNI Naming Rule 이 있다고 나와있네요.
http://java.sun.com/javase/6/docs/technotes/guides/jni/spec/design.html#wp615
Inner Class 에서 JNI Name 이 어떻게 생성되는지 JDK 6 환경에서 다음과 같이 테스트를 해봤는데요.
아래와 같은 자바 클래스가 있다고 가정합니다.
public class JNITest
{
    class InnerClass
    {
        public native void inner();
    }

    static class NestedClass
    {
        public native void inner();
    }
}
컴파일하면 다음과 같은 클래스파일이 생성됩니다.
JNITest.class
JNITest$InnerClass.class
JNITest$NestedClass.class
다음과 같이 Java 6 의 javah 로 헤더를 생성합니다. (JNITest 에 대해 한 번만 합니다.)
javah JNITest
헤더의 내용은 다음과 같습니다.
JNIEXPORT void JNICALL Java_JNITest_00024InnerClass_inner (JNIEnv *, jobject);
JNIEXPORT void JNICALL Java_JNITest_00024NestedClass_nested (JNIEnv *, jobject);
숫자 00024 는 '$' 에 대한 유니코드표시이고요.

이런 Naming Rule 만 알면 javah 를 돌리지 않고 함수 프로토타입을 그냥 만들어 쓰거나 문제가 생겼을 때 바로 수정할 수가 있습니다.

크리에이티브 커먼즈 라이선스
Creative Commons License

 
 
     , , ,
     0   0
이 글의 관련글(트랙백) 주소 ::    http://mindwing.kr/trackback/137 관련글 쓰기

아이디 
비밀번호 
홈페이지 
비밀글   

 

<<이전 | 1 ... | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 ... | 186 | 다음>>

mindwing's Blog is powered by Daum