¼Ò¼³°°Àº ÀÚ¹Ù 4ºÎ  Á¦20Àå J N I  20.2 5´Ü°è  

    5´Ü°è : C ÄÚµå¿Í Çì´õ ÆÄÀÏÀ» ÄÄÆÄÀÏ

 

ÀÌÁ¦ Àü ´Ü°è¿¡¼­ ÀÛ¼ºÇÑ C ¼Ò½º ÆÄÀϰú Çì´õ ÆÄÀÏÀ» °¡Áö°í, 1´Ü°è¿¡¼­ ¾ð±ÞÇß´ø System.loadLibrary()¸Þ¼­µå°¡ ºÒ·¯¿Ã ¡°helloworld¡± ¶óÀ̺귯¸®¸¦ ¸¸µé Â÷·ÊÀÔ´Ï´Ù. Áï, helloworld.dllÀ» ¸¸µå´Â °ÍÀÌÁÒ. °ÅÀÇ ¸¶Áö¸· ºÎºÐÀ̱º¿ä. ÀÌÁß¿¡ Á¦ÀÏ º¹ÀâÇÑ ºÎºÐÀÌ´Ï ´« ¿©°Ü º¸½Ã±â ¹Ù¶ø´Ï´Ù.

 

À©µµ¿ì ȯ°æ¿¡¼­´Â MicrosoftÀÇ C++ ÄÄÆÄÀÏ·¯¸¦ »ç¿ëÇØ¼­ ´ÙÀ½°ú °°ÀÌ DLL(Dynamic Link Library) Çü½ÄÀÇ ¶óÀ̺귯¸®¸¦ ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ¿©·¯ºÐÀÌ ÀÌ ¿¹Á¦¸¦ ½ÇÇà½ÃŰ½Ã·Á¸é ÄÄÆÄÀÏ·¯ »ç¿ëÀ» À§ÇØ Visual C++, Boland C ȤÀº Turbo C µî C¿¡ °ü·ÃµÈ ÇÁ·Î±×·¥À» ¼³Ä¡ ÇÏ¼Å¾ß ÇÒ °ÍÀÔ´Ï´Ù. ÀÌ ±âȸ¿¡ C¾ð¾î¿¡ ´ëÇØ¼­ Á¶±Ý ¸À ºÁ µÎ´Â °Íµµ ³ª»ÚÁø ¾Ê°ÚÁÒ?

 

C:\JavaExample\20>cl -Ic:\jdk1.3.1\include -Ic:\jdk1.3.1\include\win32 -LD HelloWorld.c

 -Fehelloworld.dll

 

HelloWorld.c

 

/dll

/implib:helloworld.lib

/out:helloworld.dll

HelloWorld.obj

Creating library helloworld.lib and object helloworld.exp

 

Á¶±ÝÀº º¹ÀâÇØ º¸ÀÌÁÒ? ¾Æ·¡¿¡ ´Ù½Ã ÀÚ¼¼È÷ ¼³¸íÇØ ³õÀº ±×¸²À» º¸½Ã°í Âü°í ÇϽʽÿÀ. ÄÄÆÄÀÏ ¸í·É¾î´Â ´ë¼Ò¹®ÀÚ¸¦ °¡¸®´Ï ÁÖÀÇÇϽðí, ²©¼è·Î Ç¥½ÃµÈ °ø¹é¹®ÀÚ ºÎºÐµµ ´« ¿©°Ü º¸½Ã±â ¹Ù¶ø´Ï´Ù.

 

±×¸² 20-3 CÄÚµå¿Í Çì´õ ÆÄÀÏÀÇ ÄÄÆÄÀÏ

 

n        cl : C ÄÄÆÄÀÏ ¸í·É¾î

n        -I : include½Ãų Çì´õÆÄÀÏÀÇ °æ·Î(¿©±â¼­´Â jni.h¿Í jni_md.hÀÇ °æ·ÎÀÔ´Ï´Ù.)

n        -LD : ÄÄÆÄÀÏ ÇÒ CÀÇ ÆÄÀϸí ÀÔ´Ï´Ù.

n        -Fe : »ý¼ºÇÒ ¶óÀ̺귯¸®ÀÇ ÆÄÀϸíÀÔ´Ï´Ù. À̰ÍÀ» »ý·«Çϸé C ÆÄÀϸíÀ¸·Î ÀÚµ¿ »ý¼ºµË´Ï´Ù. ¹Ù·Î À̰ÍÀÌ loadLibrary()¿¡¼­ ÀÎÀÚ·Î ÁÖ¾ú´ø ¹®ÀÚ¿­ ÀÔ´Ï´Ù.

 

¶ÇÇÑ À¯´Ð½º³ª ¸®´ª½º ȯ°æ¿¡¼­´Â ´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î ¶óÀ̺귯¸®¸¦ ¸¸µé ¼ö ÀÖ½À´Ï´Ù.

 

C:\JavaExample\20> cc –G –I/usr/local/java/include –I/usr/local/java/include/solaris HelloWorld.c

–o libhelloworld.so

 

~java/include ¾Æ·¡ÀÇ Çì´õ ÆÄÀÏ °°Àº, JDK°¡ Á¦°øÇÏ´Â Çì´õ ÆÄÀϵéÀÇ À§Ä¡´Â óÀ½ JDK¸¦ ¼³Ä¡ÇßÀ» ´ç½ÃÀÇ ¼³Á¤¿¡ µû¶ó ´Ù¸¦ °ÍÀÔ´Ï´Ù. ÀÚ½ÅÀÇ ÄÄÇ»ÅÍ¿¡ ¼³Ä¡µÇ¾î ÀÖ´Â JDK¸¦ ÂüÁ¶ÇÏ½Ã¸é µË´Ï´Ù.

 

 ¶óÀ̺귯¸® »ý¼º ÈÄ, µð·ºÅ͸®¸¦ È®ÀÎÇØº¸¸é helloworld.dll, helloworld.exp, helloworld.lib, HelloWorld.objÀÇ 4°³ÀÇ ÆÄÀÏÀÌ »ý¼ºµÇ¾ú½À´Ï´Ù. ÀÌ Áß¿¡¼­ dllÆÄÀϸ¸ »ç¿ëµË´Ï´Ù. ÄÄÆÄÀÏ ÇÒ ¶§ »ý¼ºµÉ dllÆÄÀϸíÀ» helloworld.dll·Î ¸í½ÃÇÑ ºÎºÐÀ» ±â¾ïÇϽñ⠹ٶø´Ï´Ù. ÄÄÆÄÀÏ ÇÒ ¶§ Á¦ÀÏ ¸¶Áö¸·¿¡ ¸¸µé dllÀ̸§À» ³Ö¾î ÁÖ°í ÀÖ½À´Ï´Ù.

 

¢Ñ  5 ´Ü°è

C ÄÄÆÄÀÏ·¯¸¦ »ç¿ëÇØ¼­ ¶óÀ̺귯¸®¸¦ »ý¼ºÇÑ´Ù

1.       À©µµ¿ì ȯ°æ : dll ÇüÅÂ

2.       À¯´Ð½º ȯ°æ : so ÇüÅÂ



jabookÀúÀÚ¸íÇÔ
Á¦¸ñ:¼Ò¼³°°ÀºÀÚ¹Ù4ºÎ
ÀúÀÚ:ÃÖ¿µ°ü