ÀÚ¹Ù°¡»ó¸Ó½ÅÀÌ printHelloWorld()¸Þ¼µå¸¦ helloworld.dll¾È¿¡¼ ã¾Æ ½ÇÇà ÇÏ·Á¸é, helloworld.dllÀº ÀϹÝÀûÀÎ C¿¡¼ ¸¸µå´Â °Í°ú °°Àº ¹æ¹ýÀ¸·Î ¸¸µé ¼ö ¾ø½À´Ï´Ù. ¹Ì¸® Á¤ÇØÁø ±ÔÄ¢¿¡ µû¶ó ¸¸µé¾îÁ®¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. ±× ÀÛ¾÷ Áß ÇѰ¡Áö°¡ ¹Ù·Î helloworld.dll¿¡¼ »ç¿ëÇÒ Çì´õÆÄÀÏÀ» javah¸¦ ÀÌ¿ëÇØ¼ ¸¸µå´Â °ÍÀÔ´Ï´Ù. ÀÌ·¸°Ô helloworld.dllÀÇ Çì´õÆÄÀÏÀ» ÀÚ¹Ù¿¡¼ ¸¸µé°í ¸öüÀÎ helloworld.dllÀ» C¿¡¼ ¸¸µé°Ô µÊÀ¸·Î ÀÚµ¿ ¿¬°á µÇ´Â °ÍÀÔ´Ï´Ù.
Çì´õ ÆÄÀÏÀº JDK¿¡ Æ÷ÇԵǾî ÀÖ´Â javah¶ó´Â Åø·Î ¸¸µé ¼ö ÀÖ½À´Ï´Ù. °£´ÜÈ÷ javah¶ó°í ¾²°í ÀÚ¹Ù ÆÄÀϸíÀ» Àû¾îÁÖ¸é µÇÁÒ. ¿ª½Ã ¾î·Á¿ï °ÍÀÌ Çϳªµµ ¾ø½À´Ï´Ù.
C:\JavaExample\20> javah HelloWorld C:\JavaExample\20> dir ¡¦ HelloWorld.class HelloWorld.h ¡¦ |
À§Ã³·³ javah¸¦ ½ÇÇà½ÃŲ ÈÄ µð·ºÅ͸® ³»¿ëÀ» È®ÀÎÇØ º¸½Ã¸é HelloWorld.h¶ó´Â Çì´õ ÆÄÀÏÀÌ »ý¼ºµÈ °ÍÀ» º¸½Ç ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ÀÌ Çì´õ ÆÄÀÏ ¾È¿¡´Â HelloWorld Ŭ·¡½º¿¡¼ ¼±¾ðÇÑ printHelloWorld()¸Þ¼µåÀÇ ¿øÇüÀÌ CÀÇ ¹®¹ýÀ¸·Î Á¤ÀÇ µÇ¾î ÀÖ½À´Ï´Ù. ±×·³ ½ÇÁ¦·Î HelloWorld.h Çì´õ ÆÄÀÏÀ» ¿¾î¼ »ìÆì º¸°Ú½À´Ï´Ù.
HelloWorld.h(¸Þ¼µåÀÇ ¿øÇüÀÌ Á¤ÀǵǾîÀÖ´Â Çì´õ ÆÄÀÏ) |
/* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class HelloWorld */ #ifndef _Included_HelloWorld #define _Included_HelloWorld #ifdef __cplusplus extern "C" { #endif /* * Class: HelloWorld * Method: printHelloWorld * Signature: ()V */ JNIEXPORT void JNICALL Java_HelloWorld_printHelloWorld (JNIEnv *, jobject); #ifdef __cplusplus } #endif #endif |
À§´Â »ý¼ºµÈ Çì´õ ÆÄÀÏÀ» Á¤¸®ÇÑ ¼Ò½ºÀÔ´Ï´Ù. À¯½ÉÈ÷ »ìÆì º¸½Ã¸é Áß°£ ºÎºÐ¿¡ ¿ì¸®°¡ HelloWorld Ŭ·¡½º¿¡¼ ¼±¾ðÇÑ printHelloWorld()¸Þ¼µå°¡ ¾à°£ ÀÌ»óÇÑ ¸ð½ÀÀ¸·Î Á¤ÀÇ µÇ¾î ÀÖ´Â °ÍÀ» º¼ ¼ö ÀÖ½À´Ï´Ù.
±×¸² 20-2 Çì´õÆÄÀÏ ³»ÀÇ Native Method ¿øÇüÀÇ Á¤ÀÇ
ÀÚ¹Ù °¡»ó¸Ó½ÅÀÌ ½Äº° °¡´ÉÇϵµ·Ï Native MethodÀÇ À̸§Àº ´ÙÀ½°ú °°Àº ±ÔÄ¢¿¡ ÀÇÇØ¼ ¸¸µé¾î Áý´Ï´Ù. À̰ÍÀº javah°¡ ÀÚµ¿À¸·Î º¯È¯ÇØ ÁÖ´Â °ÍÀÌ´Ï±î ±×³É ÀÐ¾î º¸½Ã°í Âü°íÇϽñ⠹ٶø´Ï´Ù.
n ¸Þ¼µå À̸§ ¾Õ¿¡ Java_ ¶ó´Â Á¢µÎ»ç°¡ ºÙ´Â´Ù
n Ŭ·¡½º¿Í ¸Þ¼µå¸¦ ±¸ºÐÇØÁÖ´Â ¡®.¡¯ (period)´Â ¡®_¡¯ (under scope)·Î ¹Ù²ï´Ù
n Ŭ·¡½º´Â ÆÐŰÁö¸¦ Æ÷ÇÔÇÏ¿© Àüü À̸§À» ½áÁØ´Ù (¿¹ : com_jabook_HelloWorld)
À§ ±×¸²À» ´Ù½Ã º¸½Ã¸é, ¸Å°³ º¯¼ö ÀÚ¸®¿¡ HelloWorldŬ·¡½º¿¡¼´Â ¼±¾ðÇÏÁö ¾Ê¾Ò´ø JNIEnv *, jobject ¶ó´Â ¸Å°³ º¯¼öµéÀÌ ÀÚ¸®Àâ°í ÀÖ½À´Ï´Ù. À̰ÍÀº javah¿¡ ÀÇÇØ¼ ÀÚµ¿À¸·Î »ðÀԵǴ µðÆúÆ® ¸Å°³ º¯¼ö·Î, ÀÚ¹Ù¿Í C¾ð¾î°£ÀÇ »óÈ£ÀÛ¿ëÀ» À§ÇØ JNI°¡ Native Method¿¡°Ô Á¦°øÇÏ´Â °ÍÀÔ´Ï´Ù. °£·«È÷ ¼³¸íÇϸé, JNIEnv *Àº ½ÇÇà ȯ°æÀÌ ÀÚ¹Ù°¡»ó¸Ó½ÅÀ̶ó´Â °ÍÀ̰í, jobject´Â Ŭ·¡½º ÀÚü¸¦ ¸»ÇÏ´Â °ÍÀÔ´Ï´Ù. ÀÌ¿Í °°Àº ¹Ì¸® Á¤ÀÇµÈ ÇÔ¼öµéÀ» »ç¿ëÇÒ ¼ö ÀÖµµ·Ï. JNI°¡ Á¦°øÇÏ´Â ÇÔ¼ö´Â 20.4Àý¿¡¼ »ìÆìº¼ °ÍÀÔ´Ï´Ù.
¢Ñ 3 ´Ü°è |
javah »ç¿ëÇØ¼ Çì´õ ÆÄÀÏÀ» »ý¼ºÇÑ´Ù |
jabookÀúÀÚ¸íÇÔ |
Á¦¸ñ:¼Ò¼³°°ÀºÀÚ¹Ù4ºÎ ÀúÀÚ:ÃÖ¿µ°ü |