- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 재능이의 돈버는 일기
- StresslessLife
- K_JIN2SM
- 소소한 일상
- My Life Style & Memory a Box
- Blog's generation
- 공감 스토리
- 취객의 프로그래밍 연구실
- Love Me
- Dream Archive
- 세상에 발자취를 남기다 by kongmingu
- hanglesoul
- 카마의 IT 초행길
- 느리게.
- 미친듯이 즐겨보자..
- Joo studio
- Gonna be insane
- 악 다 날아갔어!! 갇대밋! 왓더...
- xopowo05
- 맑은공기희망운동
- 엔지니어 독립운동
- 혁준 블로그
- Simple in Complex with Simple
- 무의식이 의식을 지배한다
목록★─Programing/☆─JNI | NDK (28)
드럼치는 프로그래머
오늘은 JNI 중 Local Reference 와 Global Reference 에 대해 알아보겠습니다. 이 글은 http://java.sun.com/docs/books/jni/html/refs.html#27423 내용을 요약 정리한 내용입니다. Local and Global References JNI는 jobject, jclass, jstring, jarray 등을 지원을 하는데 그것들은 opaque reference 입니다. 그래서 이녀석들은 JNI 함수를 통해서 opaque reference 의 내용물들을 받아와야 합니다. 이 opaque reference 의 장점은 JVM 의 내부구현에 상관없이 native code 를 구현할 수 있다는 것입니다. 프로그래머는 JNI 가 지원하는 다음의 refer..
JNI Functions Reference : http://download.oracle.com/javase/1.4.2/docs/guide/jni/spec/functions.html#wp17314 JNITest.java public class JNITest { static{ System.loadLibrary("my_dll"); } public native String greeting(String name); public static void main(String[] args) { JNITest test = new JNITest(); String result = test.greeting("Smith"); System.out.println("C 함수 리턴값: "+result); } } JNITest.h /* ..
오늘은 JNI 의 Exception 에 대해 알아보겠습니다. 이 글은 http://java.sun.com/docs/books/jni/html/exceptions.html#11202 을 요약 정리한 글입니다. Exceptions Introduction. 우리는 지금까지 JNI call 후에 여러가지 error 상황들을 체크해왔습니다. 예제 코드에서 말이죠. 여기서는 어떻게 그런 error 를 detect 하고 recover 하는지를 다룹니다. JNI 의 system call 에서 발생하는 에러는 그저 문서에 기술된 처리만 해주면 됩니다. 하지만, Java API method callback 을 호출한 경우에는 여기서 소개하는 방법에 따라 exception 처리를 해야 합니다. JNI Exceptions O..
갑자기 잘되던 프로그램이 안된다... 당황하다가 다시 마음을 잡고 천천히 디버깅 해보았다. Native와 JAVA 사이에 연결되는 함수가 호출되다가 죽는다. 아래와 같이 반복문이 15회정도 반복되는 함수였다.float correctCount = 0.0f; for( int i = 0; i < 30; i++ ) { if( jni_GetPUnlocked( s, i ) == true ) { correctCount++; } } jni_GetPUnlocked 함수는 JAVA함수를 C언어로 읽어들여 체크하는 함수였다. 함수 내용은 아래와 같다. bool jni_GetPUnlocked(int game, int question) { JNIEnv *env; jclass jNativesCls; bool pUnlocked =..
제목 : jbyteArray2cstr 메모리 해제가 안됩니다. 글쓴이: 정완호(guest) 2005/05/16 18:17:13 조회수:776 줄수:43 JNI 프로그래밍을 하다보면 김덕태님의 작성하신 NativeStringUtil.c 의 소스를 사용하게 됩니다. 그런데 이함수가 문제가 있습니다. malloc을 하고 free하는 부분이 없네요 (*env)->ReleaseByteArrayElements 에서 JVM이 자동으로 해주는거 같은데 JVM이 신뢰가 가지 않습니다. char *jbyteArray2cstr( JNIEnv *env, jbyteArray javaBytes ) { size_t len = (*env)->GetArrayLength(env, javaBytes); jbyte *nativeBytes ..
출처 : http://blog.naver.com/e00930/120011147034 JNI(Java Native Interface) 플랫폼 독립성을 버리고, 기능을 취한다. 자바 프로그램을 작성하다보면, 부득이하게 시스템 의존적 코딩을 필요로 하는 때가 있다. 하지만, 자바로서는 그러한 욕구를 감당할 수는 없다. 따라서, 자바의 클래스 파일이 C/C++의 함수를 호출하여, 그 결과만 되돌려받게 하는 것도 한 방법이다. 그렇지만 이 자체로서 이미 플랫폼 독립적이라는 특성은 사라졌다고 볼 수밖에 없다. 프로그램 작성 첫째 단계, 자바 프로그램 작성 우선, Native접근이 필요한 메쏘드만 native 키워드를 사용해 구현하지 않은 채 그대로 두고, 나머지는 모두 구현한 후, 컴파일한다. public clas..
javap -s "패키지명.클래스명" ex) String 클래스의 시그니쳐 확인 javap -s java.lang.String [출처] http://blog.naver.com/PostView.nhn?blogId=arad21&logNo=130126842586
JNI Functions Reference : http://download.oracle.com/javase/1.4.2/docs/guide/jni/spec/functions.html#wp17314 HelloJNI.java public class HelloJNI { static{ System.loadLibrary("my_dll"); } /* byte[]을 전달하고 byte[]을 리턴하는 예 */ public native byte[] byteArrayTest(byte [] name); public static void main(String[] args) throws Exception{ HelloJNI test = new HelloJNI(); byte[] src = {0,1,2,3,4,5,6,7,8,9}; by..
Java, C언어간 한글처리 문제 한글과 같은 2바이트 문자를 다루는 방식이 Java언어와 C언어가 차이를 보이기 때문에 양 언어 사이에 한글이 전달된다면 각자의 처리기준으로 처리하여 한글이 제대로 표현될 수가 없다. Java나 C 언어가 모두 한글을 표현할 때 2바이트 공간에 한개의 문자를 저장하지만 각 바이트에 저장하는 방식은 서로 다르다는 것이다. Java언어에서 한글은 유니코드로 표현되고, C언어에서 한글은 KSC5601 Character set 형식으로 표현하기 때문에 문자열을 전달하여 제대로 표현되기를 바라는 것은 무리일 것이다. JNI 한글처리 해결 다행스러운 것은 Java 언어에서도 KSC5601형식의 바이트 단위 문자열로 표현해 주는 방법이 존재한다는 것이다. 그것이 바로 유니코드 문자열..
JNI Functions Reference : http://download.oracle.com/javase/1.4.2/docs/guide/jni/spec/functions.html#wp17314 JNITest.java public class JNITest { static{ System.loadLibrary("my_dll"); } public native String greeting(String name); public static void main(String[] args) { JNITest test = new JNITest(); String result = test.greeting("Smith"); System.out.println("C 함수 리턴값: "+result); } } JNITest.h /* ..