ÃÑ ÆäÀÌÁö ¼ö : 3224
![]()
|
Facebook Joinc ±×·ì
Joinc QA »çÀÌÆ®
![]()
Tweet
joinc´Â Firefox¿Í chrome¿¡¼ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.
1절. swig ¿¡ ´ëÇØ¼swig ´Â C³ª C++ °ú ´Ù¸¥ ¿©·¯°¡Áö ¾ð¾îµéÀ» °£´ÜÇÏ°Ô ¿¬°á½ÃÄѼ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï µµ¿ÍÁÖ´Â ¾ð¾îÀÌ´Ù. Áï C³ª C++ ·Î ¸¸µé¾îÁø ¿©·¯°¡Áö ÄÚµåµéÀ» Perl, Python, Tcl, Ruby, Java µî¿¡¼ »ç¿ë°¡´ÉÇϵµ·Ï ¸¸µé¾î ÁØ´Ù. ¿ì¸®°¡ ÀÚÁÖ»ç¿ëÇÏ´Â ½ºÅ©¸³Æ® ¾ð¾îÀÎ Perl, Python Àº ¸Å¿ì °·ÂÇÏ±ä ±»ÀÌ C¿Í C++ À» ¼±ÅÃÇØ¼ ÄÚµùÇϵµ·Ï ÇÏ´Â ¸î°¡Áö ´ÜÁ¡µéÀ» °¡Áö°í ÀÖ´Ù. Áï ÄÄÆÄÀϵÇÁö ¾Ê¾Æ¼ ½î¾²Äڵ尡 º¸Àδٴ Á¡°ú, ¼Óµµ¿¡ ¸Å¿ì ¹Î°¨ÇÑ È¿À²ÀûÀÎ Äڵ带 ÀÛ¼ºÇÒ Çʿ䰡 ÀÖÀ»¶§ ¹®Á¦°¡ µÉ¼ö ÀÖ´Ù¶ó´Â Á¡ÀÌ´Ù. ¹°·Ð ²Ï ¿À·¡ÀüºÎÅÍ Perl, Python ÄÄÆÄÀÏ·¯°¡ Á¸ÀçÇÏÁö¸¸(»ó¿ë, °ø°³ ¸ðµÎ), À̵éÀÌ ¸¸µé¾î³½ ½ÇÇàÆÄÀÏÀº °ú¿¬ÀÌ°Ô È¿À²ÀûÀ¸·Î µ¹¾Æ°¥¼ö ÀÖÀ»·±Áö¸¦ Àǽɽº·´°Ô ¸¸µé Á¤µµ·Î ºñÁ¤»óÀûÀ¸·Î ½ÇÇàÆÄÀÏÀÌ Ä¿Áø´Ù. ¼Óµµ¹®Á¦ ¿ª½Ã ¸¶Âù°¡Áö´Ù. ¿©·¯°¡Áö ´Ù¾çÇÑ Á¶»ç¿Í ÀÌµé ½ºÅ©¸³Æ® ¾ð¾îÀÇ ¼º´É°³¼±À» ÅëÇØ¼, ¶Ç´Â ÄÄÇ»ÅÍÀÇ ¼º´ÉÀÇ °³¼±À» ÅëÇØ¼ ´ëºÎºÐÀÇ °æ¿ì ¸Å¿ì ÁÁÀº ¼º´ÉÀ» º¸¿©ÁÖ±ä ÇÏÁö¸¸ ¿©ÀüÈ÷ ÃÖÀûÈµÈ C/C++ º¸´Ù ³ªÀº ¼º´ÉÀ» ±â´ëÇϱâ´Â ¾î·Á¿ï°ÍÀ¸·Î º¸¿©Áø´Ù. ±×·¡¼ ¸¸µé¾îÁø°Ô swig ÀÌ´Ù. Áï ÀÎÅÍÆäÀ̽º ºÎºÐÀº ¸Å¿ì ºü¸£°í ¼Õ½±°Ô °³¹ßÀÌ °¡´ÉÇÑ Perl, Python µîÀ¸·Î °³¹ßÀ» Çϰí Äڵ带 ¼û°Ü¾ß µÇ°Å³ª ȤÀº ³ªÀº ¼º´ÉÀ» ÇÊ¿ä·Î ÇÏ´Â ºÎºÐÀº C ·Î ÀÛ¼ºÇϵµ·Ï ÇØ¼ ¼·Î ¿¬°á ½ÃŰ´Â °ÍÀÌ´Ù. À̸¦Å׸é GUI ÇÁ·Î±×·¥À» ¸¸µéÀû¿¡ ¹è¿ì°í »ç¿ëÇϱ⠱î´Ù·Î¿î QT, GTK ´ë½Å wxpython À» »ç¿ëÇÏ°í ½ÇÁö ÀÛµ¿ÇÏ´Â ºÎºÐÀ» C/C++ ·Î ÀÛ¼ºÇÑ´ÙÀ½ ¼·Î ¿¬°á ½ÃŰ´Â °ÍÀÌ´Ù. ÀÌ·¸°Ô ÇÔÀ¸·Î½á °³¹ß¼Óµµ Çâ»ó, È¿À²¼º, ÄÚµå ¼û±èÀÇ 2¸¶¸® Åä³¢¸¦ µ¿½Ã¿¡ ÀâÀ»¼ö ÀÖ°Ô µÈ´Ù. ÀÌ ¹®¼´Â swig ÀÇ »ç¿ë¿¡ ´ëÇÑ ¹®¼ÀÌ´Ù. swig ÀÇ ¾ÆÁÖ ¼¼¼¼ÇÑ ºÎºÐÀ» ¾ð±ÞÇÏÁö´Â ¾ÊÀ¸¸ç, ÁÖ·Î ¾î¶»°Ô »ç¿ëÇÏ´ÂÁö¿¡ ÃÐÁ¡À» ¸ÂÃß°Ô µÉ°ÍÀÌ´Ù. swig °¡ Áö¿øÇÏ´Â ¿©·¯°¡Áö ¾ð¾îÁß¿¡¼ Python °ú Perl À» C,C++ °ú ¿¬°á½ÃŰ´Â ¹æ¹ý¿¡ ´ëÇØ¼¸¸ ´Ù·ê°ÍÀÌ´Ù. ÀÌ¿ÜÀÇ ÀÚ¼¼ÇÑ Á¤º¸µéÀº swig ȨÆäÀÌÁö ¸¦ Âü°íÇϱ⠹ٶõ´Ù. Âü°í·Î swig °¡ Áö¿øÇÏ´Â ¾ð¾î´Â Perl, Python, Java, Guile, Ruby, Php, Tcl µîÀÌ ÀÖ´Ù. À̵éÁß Perl °ú Python À» ´Ù·ç´Â ÀÌÀ¯´Â ÇÊÀÚ°¡ Perl °ú Python ¿¡ Á»´õ Àͼ÷Çϱ⠶§¹®ÀÌ´Ù. 2절. swig ¸¦ »ç¿ëÇÑ ÇÁ·Î±×·¡¹Ö2.1절. swig ¼³Ä¡Çϱâ¿ì¼±Àº swig ¸¦ ´Ù¿î¹Þ¾Æ¼ ¼³Ä¡ÇØ¾ß ÇÒ°ÍÀÌ´Ù. swig ´Â ÇöÀç(2002³â 7¿ù 20ÀÏ) 1.3.12 ¹öÁ¯ ±îÁö ³ª¿Í ÀÖ´Ù. swig ȨÆäÀÌÁö ¿¡¼ ´Ù¿î ¹Þµµ·Ï ÇÏÀÚ. ÃֽŹöÁ¯ÀÎ 1.3.12 ´Â C++ namespace ¿Í C++ templates ±îÁö Ãß°¡·Î Áö¿øÇÑ´Ù. ¶ÇÇÑ À©µµ¿ìÁîµµ Áö¿øÇÑ´Ù. ¿©±â¿¡¼´Â linux ¹öÁ¯À» Áß½ÉÀ¸·Î ¼³¸íÇϰڴÙ. ÀÏ´Ü ´Ù¿î ¹Þ¾ÒÀ¸¸é Àû´çÇÑ µð·ºÅ丮·Î ¿Å±â°í ÄÄÆÄÀÏ ÈÄ ¼³Ä¡Çϵµ·Ï ÇÑ´Ù. ./configure, make, make install ÀÇ ÀüÇüÀûÀÎ ¼³Ä¡ ¹æ¹ýÀ» µû¸£¸é µÈ´Ù. Ưº°È÷ ¿É¼ÇÀ» ÁÖÁö ¾Ê°í ./configure ½ºÅ©¸³Æ®¸¦ µ¹¸°ÈÄ ¼³Ä¡Çß´Ù¸é /usr/local/bin ¹Ø¿¡ swig ½ÇÇà ÆÄÀÏÀÌ ¼³Ä¡µÉ °ÍÀÌ´Ù. 2.2절. ¿¹Á¦¸¦ ÅëÇÑ swig ÀÇ °£´ÜÇÑ »ç¿ë¹æ¹ýC ÄÚµå¿Í python À» °áÇÕÇÏ´Â °£´ÜÇÑ ¿¹Á¦¸¦ ÅëÇØ¼ swig ÀÇ »ç¿ë¹æ¹ý¿¡ ´ëÇØ¼ ¾Ë¾Æº¸µµ·Ï ÇϰڴÙ. ¿ì¸®°¡ C ·Î ¸¸µéÇÔ¼ö´Â "hello world" ¸¦ Ãâ·ÂÇØÁÖ´Â ÇÔ¼öÀÌ´Ù. ½î½ºÆÄÀÏÀÇ À̸§Àº hello.c ·Î ÇÏÀÚ.
2.2.1절. Interface file Á¦ÀÛÀÌÁ¦ À§ÀÇ C ÇÔ¼ö¸¦ À§ÇÑ interface ÆÄÀÏÀ» ¸¸µé¾î¾ß ÇÑ´Ù. ÀÌÆÄÀÏÀº swig°¡ C ÇÔ¼ö¸¦ ´Ù¸¥ ¾ð¾î¿Í ¿¬°á½Ã۱â À§ÇÑ Á¤º¸ÆÄÀÏÀ» ¸¸µé±â À§Çؼ ÀÌ¿ëµÈ´Ù. Interface file Àº ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºµÈ´Ù.
2.2.2절. Python module ¸¸µé±âÀÌÁ¦ À§ÀÇ ÀÎÅÍÆäÀ̽º ÆÄÀÏÀÎ hello.i ¸¦ ÀÌ¿ëÇØ¼ Python ¸ðµâÀ» ¸¸µé¸é µÈ´Ù.
2.2.3절. Perl module ¸¸µé±âPerl module ¿ª½Ã Python module ¸¦ ¸¸µå´Â°Í°ú °°Àº ¼ø¼·Î ¸¸µé¼ö ÀÖ´Ù.
2.2.4절. C++ À» module ·Î ¸¸µé±â2.2.4.1절. Class ÀÇ »ç¿ëC++ ÀÇ °æ¿ì´Â C ¿Í´Â ´Þ¸® ¸î°¡Áö ½Å°æ½áÁà¾ß ÇÒ°ÍÀÌ ÀÖ´Ù. ƯÈ÷ class ÀÇ °æ¿ì¿¡´Â ´Ü¼øÈ÷ ÇÔ¼ö¸¸ È£ÃâÇÑ´Ù°í µÇ´Â°Ô ¾Æ´Ï°í, class ¸¦ ÀÌ¿ëÇØ¼ °´Ã¼¸¦ »ý¼ºÇÏ°í °´Ã¼ÀÇ ¸Þ¼µå¸¦ ºÒ·¯¿Í¾ß µÈ´Ù. ¸Ó ±×·¸´Ù°í ÇØ¼ Interface ¸¦ ¸¸µé°Å³ª module ¸¦ ¸¸µå´Â ¹æ¹ýÀÌ Å©°Ô Â÷À̰¡ ³ª´Â°Ç ¾Æ´Ï´Ù. ÀÏ´Ü ´ÙÀ½°ú Äڵ带 python module ·Î ¸¸µé¾îº¸µµ·Ï ÇÏÀÚ. ¿ì¸®°¡ ¸¸µé C++ ÄÚµå´Â 2°³ÀÇ ¼ýÀÚ¸¦ ÀԷ¹޾Ƽ ¸â¹öº¯¼ö·Î ÀúÀåÇÏ°í °¢°¢ µ¡¼À, °ö¼À, »¬»ùÀ» ÇÏ´Â 3°³ÀÇ ¸Þ¼µå¸¦ ÀÌ¿ëÇØ¼ °¢ ¿¬»êÀÇ °á°ú °ªÀ» µÇµ¹·ÁÁÖ´Â ÀÏÀ» ÇÑ´Ù. ÀÌ ÇÁ·Î±×·¥Àº 2°³ÀÇ ÆÄÀÏ·Î ±¸¼ºµÈ´Ù. ÆÄÀÏÀ̸§Àº °¢°¢ cal.h ¿Í cal.cc ·Î ÇϰڴÙ. ¸ÕÀú cal.h ÀÌ´Ù.
ÀÌ·¸°Ô ÇØ¼ ¿ì¸®´Â python ¸ðµâÀ» ¸¸µé¾ú´Ù. ÀÌÁ¦ ½ÇÁ¦·Î Å×½ºÆ®¸¦ ÇØº¸µµ·Ï ÇÏÀÚ.
c++ Ŭ·¡½ºÀÇ °æ¿ì »ç¿ë¹æ¹ýÀÌ ¾à°£ ƯÀÌÇϱä ÇÏÁö¸¸ »ç¿ëÇϴµ¥ Å©°Ô ¾î·Á¿òÀº ¾øÀ»°ÍÀÌ´Ù. 2.2.4.2절. ÀÌ¿ÜÀÇ °ÍµéSTL°ú, ±¸Á¶Ã¼, enum °ú °°Àº ÀÚ·áÇüÀ» ¾î¶»°Ô ½á¾ßÇÏ´ÂÁö´Â swig ¸Þ´º¾óÀ» ã¾Æº¸±â ¹Ù¶õ´Ù. swig ¸¦ ¹ÞÀ¸¸é Example ÆÄÀϵéÀÌ ÀÖÀ¸¸ç, ¿©±â¿¡´Â ÀÌ·¯ÇÑ °¢°¢ÀÇ ÀڷᱸÁ¶¿Í ¶óÀ̺귯¸®¸¦ ¾î¶»°Ô ÇØ¼ python À̳ª Perl µî¿¡¼ »ç¿ëÇÒ¼ö ÀÖ´ÂÁö¿¡ ´ëÇÑ ¹æ¹ýÀ» ¿¹¸¦µé¾î¼ ¼³¸íÇϰí ÀÖ´Ù. 3절. Pop üũÇÁ·Î±×·¥À» ¸¸µé¾î º¸ÀÚÀ̹ø¿¡´Â swig ¸¦ ÀÌ¿ëÇÑ º»°ÝÀûÀÎ ÀÀ¿ëÀ» ÇØº¸µµ·Ï ÇϰڴÙ. À̹ø¿¡ ¸¸µé ÀÀ¿ëÀº pop3 ¼¹ö¿¡ ¸î°³ÀÇ ¸ÞÀÏÀÌ µµÂøÇß´ÂÁö¸¦ È®ÀÎÇÏ´Â ÇÁ·Î±×·¥Àε¥, ¿ì¸®´Â ÀÌ¹Ì POP3 ¸ÞÀÏ Ã¼Å© ÇÁ·Î±×·¥ ¸¸µé±â ¿¡¼ ´Ù·ç¾îº»ÀûÀÌ ÀÖ´Ù. À§ÀÇ ¿¹Á¦ ÇÁ·Î±×·¥Àº C ¿Í Python À» ¿¬°á½Ã۱â À§Çؼ pipe ¸¦ »ç¿ëÇߴµ¥, ¿ØÁö ¿¬°áÀÌ Á» ºÒ¿ÏÀüÇØ º¸ÀδÙ. ±×·¡¼ C ¿¡¼ ¸ÞÀϼýÀÚ °¡Á®¿À´Â ºÎºÐÀ» ¾Æ¿¹ python ¸ðµâ·Î ¸¸µé¾î¼ python °ú ºÎµå·´°Ô ¿¬°áÇϵµ·Ï ÇÒ°ÍÀÌ´Ù. ÀÌ ¿¬°áÀº swig ¸¦ ÀÌ¿ëÇÒ°ÍÀÌ´Ù. 3.1절. pop üũ¸¦ À§ÇÑ python ¸ðµâ Á¦ÀÛ¿ì¼± ¸ÞÀÏ ¼ýÀÚ¸¦ °¡Á®¿À±â À§ÇÑ C Äڵ带 ¸¸µé¾î¾ß ÇÑ´Ù. ÀÌ ÄÚµå´Â pop.h ¿Í pop.c 2°³ÀÇ ÆÄÀÏ·Î ÀÌ·ç¾îÁø´Ù. pop.h
pop.c
ÀÌÁ¦ swig ¸¦ ÀÌ¿ëÇØ¼ python ¸ðµâÀ» ¸¸µé¾î º¸µµ·ÏÇÏÀÚ.
ÀÌÁ¦ python À» ÀÌ¿ëÇØ¼ Å×½ºÆ® ÇØº¸µµ·Ï ÇÏÀÚ. ¹°·Ð Å×½ºÆ®ÇÒ¼ö ÀÖ´Â pop °èÁ¤ÀÌ ÁغñµÇ¾îÀÖ¾î¾ß ÇÒ°ÍÀÌ´Ù. ÇÊÀÚÀÇ °æ¿ì´Â Linux ¹Ú½º¿¡ qpopper À» ¼³Ä¡Çؼ Å×½ºÆ® ÇØº¸¾Ò´Ù.
3.2절. wxpython À» ÀÌ¿ëÇÑ GUI ÇÁ·Î±×·¡¹Ö´ÙÀ½Àº ¿ÏÀüÇÑ ÇÁ·Î±×·¥Àº ¾Æ´Ï´Ù. ÇÁ·Î±×·¥ Á¾·á½Ã ¾²·¹µå¸¦ ¾î¶»°Ô ó¸®ÇØ¾ß ÇÒÁö¸¦ ¸í½ÃÇÏÁö ¾Ê¾Ò´Ù. ¾Æ¸¶µµ EVENT ¸¦ ÀÌ¿ëÇØ¼ ȤÀº Á» º¹ÀâÇÏ°Ô ÇÑ´Ù¸é mutex Àá±ÝµîÀ» ÀÌ¿ëÇØ¼ ÇØ°á°¡´ÉÇϰÚÁö¸¸ À̰ÍÀÇ Ã³¸®´Â °¢ÀÚÀÇ ¸òÀ¸·Î ³²°Ü ³õ°Ú´Ù.
4절. °á·ÐÀÌ»ó swig ¿¡ ´ëÇÑ ³»¿ëÀ» ¼ö¹Ú °ÑÇӱ⠽ÄÀ¸·Î ÈÈ¾î º¸¾Ò´Ù. ±×·¸±ä ÇÏÁö¸¸ swig ¸¦ ¾î¶³¶§ À¯¿ëÇÏ°Ô »ç¿ëÇÒ¼ö ÀÖÀ»·±Áö¿¡ ´ëÇÑ °¨À» Àâ¾ÆÁֱ⿡´Â ÃæºÐÇÑ Á¤µµÀÇ ³»¿ëÀ̶ó°í »ý°¢µÈ´Ù. swig ¸¦ ÀÌ¿ëÇÏ¸é ´Ù¸¥ À¯¿ëÇÑ ½ºÅ©¸³Æ® ¾ð¾îµé°ú C, C++ À» °áÇÕÇÏ¿©, ºü¸£°í ¼Õ½±°Ô ÀÛ¼ºÇÒ¼ö ÀÖÀ¸¸é¼µµ C/C++ ¾ð¾îÀÇ Æ¯Â¡ÀÎ È¿À²¼º°ú ½î½ºÄÚµå °¨ÃãµîÀÇ ±â´É±îÁöµµ °¡Áö´Â ÇÁ·Î±×·¥ÀÇ Á¦ÀÛÀÌ °¡´ÉÇÏ´Ù. ÀÌ ±â»çÀÇ ³»¿ëÀ» °¡Áö°í ¾î¶»°Ô ½ÇÁ¦ ȯ°æ¿¡¼ ½á¸Ô°í, °¡Áö°í ³î°ÇÁö´Â ¿©·¯ºÐÀÇ Çϱ⳪¸§¿¡ ´Þ·ÁÀÖ´Ù°í »ý°¢µÈ´Ù. ¾Æ¹«ÂÉ·Ï swig ¸¦ Àß ÀÌ¿ëÇØ¼ ¸ÚÁø °³¹ßȯ°æÀ» Çѹø ±¸ÃàÇØ º¸±æ ¹Ù¶ó´Â ¹ÙÀÌ´Ù. |
|
|||||||||||||||||||
|
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù. |
|