본문 바로가기

JNI

(4)
톰캣에서 Native Library 활용을 위한 JNI사용하기 팁 일단 윈도우 상에서 서블릿이 JNI사용을 위한 Native Library 파일(.dll) 파일을 찾기 위해서는 환경 변수의 path에 잡혀 있는 경로 중 하나에 이 파일이 들어가 있으면 됩니다. 예를 들어 윈도우에서 톰캣을 설치하면, 설치된 톰캣 폴더 밑의 /bin폴더는 (톰캣 실행 파일이 있는 곳이죠) path가 잡혀있게 되는데, 이 경우, 이 폴더에 dll파일이 있으면 읽을 수 있습니다. 자 그런데, 이 라이브러리(C코드로 된)가 어떠한 설정파일을 읽어와야 한다고 합시다. 이 경우, 절대 경로와 상대 경로를 사용될 수 있는데, 상대 경로를 사용하는 경우, windows/system32 폴더가 기준이 됩니다. 그리고 이 경로는 OS에 따라서 다를 수 있습니다. out.print(""+System.get..
리눅스에서 동적라이브러리 활용을 위한 JNI 사용_동적라이브러리파일(.a) 포함해서 컴파일 하기 일반적으로 다른 라이브러리 파일을 사용하지 않는 native code를 컴파일 할 때는 다음과 같이 해주면 됩니다. gcc -m32 -shared -o libIndexJNI.so IndexJNI.c -static -lc native code를 사용하는 class에서 호출하는 라이브러리 이름이 IndexJNI입니다. 즉 System.loadLibrary("IndexJNI"), 이런 식으로 native library를 호출하게 됩니다. -m32 : 제가 gcc 사용이 미숙한 관계로 각 옵션에 대한 자세한 설명은 드릴 수 없습니다. 64bit 관련해서 에러가 발생할 경우, 이 옵션을 통해서 32bit로 에뮬레이션해서 컴파일 해줍니다. 정확히는 링킹 옵션인가요? -shared : JNI는 동적 라이브러리 파일을..
JNI 컴파일 성공, 이제 문제는 씨코드 사용환경 : Eclipse 3.2 Visual C++ 6.0 1. 이클립스에서 자바 코드 만들기 중요한 부분은 만든 코드와 그 코드에서 사용할 라이브러리를 모두 System.loadLibrary 로 불러와야 한다는 것 2. Visual C++ 6.0에서 씨코드 만들기와 DLL파일 제작하기 프로젝트를 만들때 DLL파일 만들기 프로젝트로 만든 다음, Setting - Link 에서 작성할 코드에서 사용할 라이브러리를 추가한 다음, 컴파일하면 된다. 3. 실행 Project Property 에서 build path-Libraries-JRE System Library-Native library location을 2에서 만든 DLL파일이 있는 폴더를 입력해 준다. 4. String을 다룰 때, byte[] arr..
기존의 C 라이브러리를 활용하기 위한 JNI의 사용 자바 파일의 작성 .h 파일을 만듦 javah -classpath ./ -d ./com/indexJNI/header com.indexJNI.IndexJNI 패키지화된 클래스를 위해 위와 같이 h 파일을 만든다. c 파일 작성 c 파일 컴파일 gcc -c -fpic indexjni.c indexjni.o 생성 gcc -shared -o libindexjni.so indexjni.o libindex.a libindexjni.so 생성 java.sun.com에 나와 있는 컴파일 소스 gcc -o libnativelib.so -shared -Wl,-soname,libnative.so -I/export/home/jdk1.2/include -I/export/home/jdk1.2/include/linux native..