¼Ò¼³ java.jni ¼Ò½ºÄڵ堠°´Ã¼ÀÇ ¸Þ¼­µå¿¡ Á¢±Ù  °´Ã¼ÀǸ޼­µå¿¡Á¢±Ù  

°´Ã¼ÀÇ ¸Þ¼­µå¿¡ Á¢±ÙÇϱâ

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ÀúÀÚ¸íÇÔ
Á¦¸ñ:¼Ò¼³°°Àº¹Ì´ÏÄÚµå
ÀÛ¼ºÀÚ:Àںϸâ¹ö ±è´ë¼º