- 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)
드럼치는 프로그래머
JNITest.java public class JNITest { static{ System.loadLibrary("my_dll"); } public native int add(int a, int b); public static void main(String[] args) { JNITest test = new JNITest(); int result = test.add(3, 5); System.out.println("C 함수 리턴값: "+result); } } JNITest.h /* DO NOT EDIT THIS FILE - it is machine generated */ #include /* Header for class JNITest */ #ifndef _Included_JNITest #define _I..
HelloJNI.java public class HelloJNI { static{ System.loadLibrary("my_dll"); } /* 기본형 파라미터를 전달하는 경우 */ public native void printSize(boolean b, byte bt, short s, char c, int i, long lg, float f, double d); public static void main(String[] args) throws Exception{ new HelloJNI().printSize(true, (byte)1, (short)2, 'A', 3, 4L, 5.0F, 6.0); } } HelloJNI.h /* DO NOT EDIT THIS FILE - it is machine generat..
Cygwin에서 setup.exe를 받아서 다운로드 위치를 선택할 때, 미러 사이트에 .kr로 끝나는 사이트는 어딜 보아도 없습니다. 한번은 일본의 jaist에서 잘 다운로드했는데, 집에서 와이브로로 접속할 때는 미국, 일본 어디를 해도 무조건 실패를 하였습니다. ftp://ftp.kaist.ac.kr이 옛날에는 미러사이트였다고 하길래 등록하면 오류가 나면서 진행이 안되었습니다. 그 와중에 kldp에 보니까, ftp://ftp.kaist.ac.kr 이 아니고, ftp://ftp.kaist.ac.kr/cygwin 이라고 되어 있더군요. 지금 설치 중인데, 쾌적한 속도로 잘 진행 중입니다. 이클립스 혹은 구글 웹툴킷 등을 설치할 때, 자주 다운로드가 실패를 해서 프로그래머의 시간을 낭비하곤 하는데, Cygw..
안드로이드 JNI 영역에서 printf 를 사용해봤자 쓰이지도 않고 해서 찾아낸것이 안드로이드 어플처럼 LOG를 사용하는 거~ !! 답답함은 조금 줄어듬.. #include 를 포함해야하고~ log.h를 살펴보면 __android_log_print(LOG_LEV, _TAG, ...); 형태로 되어있는데 ~ 어플의 Log.i 이런것들 쓰다가 쓸려면 돌아버리죠~ 그래서 #define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, "libnav", __VA_ARGS__) #define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG , "libnav", __VA_ARGS__) #define LOGI(...) __android_l..
자바는 유니코드를 쓰고, JNI는 UTF-8을 쓰구, C/C++환경에서는 KSC5601 바이트문자열을 쓰더군요. 황당 그자체였습니다. 하지만, 여기도 그렇고 다른곳에서도 한글해결을 위한 명확한 방법을 제시한곳이 없더군요. 그래서, 3일동안 끙끙되며 찾은 방법을 JNI를 공부하거나 구현하고자 하는분을 위해서 설명드리고자 합니다. 참고URL : http://www.grine.co.kr/computer/lang6101.htm => JNI에서 한글처리하는 코어를 가져온 사이트임다. 겨우 찾아냈죠. ^^* 컴파일 환경은 WinXP, JDK1.4.2.04로 했으며, C컴파일을 위해서 VisualC++을 이용했습니다. 간단히 설명하면(파일명을 Test.java과 Test.c) javac Test.java javah ..
졸업 논문을 위해서 ndk를 사용하게 되었는데 하도 설치가 복잡해서 ndk를 꼭 써야 하나 하는 의구심이 들었다. 안써도 충분히 구현이 가능한데... 고민중.. 역시 다른 사람 의견을 보자 하고 글로벌 검색 시작. 결과는...... 일본분이 테스트 한 자료에는 , 1억번 덧셈의 경우 자바 구현시 45825미리초.. native 인 c로 구현시 9미리초...... for ( int I = 0 ; i < 100000000 ; i + +) { count + +; } 컴파일 최적화로 인한 속도 형상으로 판단되어 수식 변경후 다시 측정한 결과 사진..... for ( int I = 0 ; i < 10000000 ; i + +) { count1 = count1 * 2 / 3 + 5 - 1 ; } 이건.. 넘사벽..
JNI 하면 C++ 라이브러리를 JAVA에서 사용하는 것만 있는 줄 알았는데, 그 반대의 경우도 있다. 허나, 사용할 때 상당히 삽질을 많이해서, 사용기를 적어둔다. 1. 초기화 JavaVMOption options[2]; JavaVMInitArgs vm_args; long status; //참조할 jar, class 파일의 위치를 지정한다. 이게 잘못되면 추후에 NewObject 함수를 이용하여 클래스를 선언, 객체화 할 때, null을 반환한다. 따라서 이런 case에는 아래 경로가 확실히 지정되었는지를 보면 된다. options[0].optionString = "-Djava.class.path=K:/lib/ant.jar;\ K:/optional.jar;K:/java-getopt.jar"; memse..
갑자기 뜬금 없이 JNI라니.. 안드로이드에도 C 기반의 엔진을 지원하다보니 JNI파일을 함께 빌드해야하는 경우가 종종 생긴다. 근데, 처음 접해보면 JNI라는게 참... 불편하다. 특히나, C 기반의 엔진 API가 구조체와 같은 매개변수를 주고 받는다면, 더욱 그렇다. 예를 들어보자. C 기반 라이브러리의 API 파일 clib.h에 다음과 같이 정의되어 있다. // ----------------------------------------------------------------------- // clib.h typedef struct tagTestStruct { int nA; int nB; int nC; } TestStruct; SetParam(TestStruct * pParam); // ------..