°´Ã¼ÀÇ ¸Þ¼µå¿¡ Á¢±ÙÇϱâ
MethodControl.java
public class MethodControl {
static {
System.loadLibrary("control");
}
public native void add();
public int multi(int a, int b){
return a*b;
}
public static void main(String[] args) throws Exception{
new MethodControl().add();
}
}
C:\20>javac MethodControl.java
C:\20>javah MethodControl
MethodControl.c
#include <jni.h>
#include "MethodControl.h"
#include <stdio.h>
JNIEXPORT void JNICALL Java_MethodControl_add (JNIEnv *env, jobject obj){
jclass class_methodcontrol = (*env)->GetObjectClass(env, obj);
jmethodID m_id = (*env)->GetMethodID(env, class_methodcontrol, "multi", "(II)I");
jint c_a, c_b, c_c;
c_a = 5;
c_b = 10;
c_c = (*env)->CallIntMethod(env, obj, m_id, c_a, c_b);
printf("c = %d \n", c_c);
}
C\20>cl -Ic:\jdk1.3.1\include -Ic:\jdk1.3.1\include\win32 -LD MethodControl.c -Fecontrol.dll
MethodControl.c
/dll
/implib:control.lib
/out:control.dll
MethodControl.obj
Creating library control.lib and object control.exp
C\20>java MethodControl
c = 50
°´Ã¼ÀÇ ÂüÁ¶°ª°ú ¸Þ¼µåÀÇ ÂüÁ¶°ªÀ» ¾Ë¾Æ³½ ÈÄ, ÀÚ¹ÙÀÇ ¸Þ¼µå¸¦ »ç¿ëÇÕ´Ï´Ù.
GetMethodID(env, class_methodcontrol, "multi", "(II)I") : ¸Þ¼µåÀÇ ÂüÁ¶°ªÀ» ¹ÝȯÇÕ´Ï´Ù.
CallIntMethod(env, obj, m_id, c_a, c_b) : ¸Þ¼µå¸¦ È£ÃâÇÏ¿© »ç¿ëÇÕ´Ï´Ù.
jabookÀúÀÚ¸íÇÔ |
Á¦¸ñ:¼Ò¼³°°Àº¹Ì´ÏÄÚµå ÀÛ¼ºÀÚ:Àںϸâ¹ö ±è´ë¼º |