일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 아두이노
- 워드프레스
- Php공부
- 파이썬
- 아두이노 기초강좌
- 쿠팡파트너스
- 자동포스팅
- Python
- Javascript
- 챗지피티
- cocos2d-x
- 웹
- 자바스크립트
- 파싱
- flex
- php
- c#
- 아두이노 초보
- 무료일러스트
- 가상서버
- vultr
- 그누보드
- 자동글쓰기
- 아두이노 강좌
- ChatGPT
- Ajax
- HTML
- 프로그램
- 자동블로그
- vps
- 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