일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 30 | 31 |
- 자동블로그
- Php공부
- 워드프레스
- 무료일러스트
- 아두이노
- 아두이노 강좌
- 그누보드
- HTML
- 자바스크립트
- 아두이노 기초강좌
- vultr
- 챗지피티
- 파이썬
- 자동포스팅
- 파싱
- cocos2d-x
- Javascript
- 웹
- 아두이노 초보
- Python
- ChatGPT
- 프로그램
- vps
- 가상서버
- php
- 쿠팡파트너스
- flex
- 자동글쓰기
- c#
- Ajax
- Today
- Total
플밍
JNI 기본적인 사용방법 본문
JNI 에 대한 아주 기본적인 사용방법이다.
아주 단순한 자바에서 cpp의 함수 호출만 하는 과정이다.
JNI가 뭔지 맛보기만...
※ 클래스, 함수호출, 스트링등 기타 자세한 사용법은 관련문서를 참조
#ads_1
1. 자바파일 작성
<HelloNative.java>
class HelloNative{
native public static void
hello();
static{
System.loadLibrary("HelloNative");
}
}
class HelloNativeTest{
public static void main(String[]
args){
HelloNative.hello();
}
}
2. 컴파일
# javac HelloNative.java
3. c 헤더파일 자동 생성
# javah HelloNative
4. cpp 파일작성
<HelloNative.cpp>
#include <iostream>
using namespace std;
#include "HelloNative.h"
JNIEXPORT void JNICALL Java_HelloNative_hello(JNIEnv* env, jclass
cls){
cout << "Hello world" << endl;
}
#ads_2
5. 커맨더라인에서 cpp 컴파일
// EHsc : try catch 안 썼을때 throw가 발생하면 자동저장소에 있는 개체를 자동으로
소멸시킴, I : 인클루드, /Fe : 실행파일의 이름을 변경
# cl /EHsc /I %JAVA_HOME%\include
/I %JAVA_HOME%\include\win32 HelloNative.cpp /Fe HelloNative.dll
# C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat
6. 자바파일 실행
# java HelloNative
Hello world //결과
※ 자바클래스의 클래스명세(Reflection)를 볼때 (cpp에서 호출할때 이 정보를 알아야 호출할 수 있음)
# javap -s private HelloNative
#ads_3