ÀÌÁ¦ Àü ´Ü°è¿¡¼ ÀÛ¼ºÇÑ 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ºÎ ÀúÀÚ:ÃÖ¿µ°ü |