¾ÕÀ¸·Î    ¸ñÂ÷    1    2    3    4    5    6    7    Á¦8Àå    ´ÙÀ½À¸·Î

8. À©µµ¿ì¿¡¼­ÀÇ ÆÄÀ̽ã

8.1. ¸¶ÀÌÅ©·Î¼ÒÇÁÆ® À©µµ¿ì¿¡¼­ ÆÄÀ̽ãÀ» CGI·Î »ç¿ëÇϱâ

¸¶ÀÌÅ©·Î¼ÒÇÁÆ® IIS ¼­¹ö/Peer ¼­¹ö¸¦ ¼³Á¤Çϱâ:

¸¶ÀÌÅ©·Î¼ÒÇÁÆ® IIS ¼­¹ö ¶Ç´Â Win95 MS °³ÀÎ À¥ ¼­¹ö¿¡¼­ ´Ù¸¥ ½ºÅ©¸³Æ® ¿£ÁøÀ» ¼³Á¤ÇÏ´Â °Í°ú ¸¶Âù°¡Áö ¹æ½ÄÀ¸·Î ÆÄÀ̽ãÀ» ¼³Á¤ÇÕ´Ï´Ù.

regedt32¸¦ ½ÇÇàÇÏ½Ã°í ´ÙÀ½À¸·Î °¡¼¼¿ä:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\ScriptMap

±×¸®°í ´ÙÀ½ÀÇ ¶óÀÎÀ» ÀÔ·ÂÇϼ¼¿ä (¿©·¯ºÐÀÇ ½Ã½ºÅÛÀÌ ÇÊ¿ä·Î ÇÏ´Â ¾î¶² ƯÁ¤ÇÑ º¯°æÀ» Çϼ¼¿ä)

.py :REG_SZ: c:\<path to python>\python.exe -u %s %s

ÀÌ ¶óÀÎÀ¸·Î ¿©·¯ºÐÀº ½ºÅ©¸³Æ®¸¦ °£´ÜÇÑ ÂüÁ¶·Î ´ÙÀ½°ú °°ÀÌ È£ÃâÇÒ ¼ö ÀÖ°Ô µË´Ï´Ù: "½ºÅ©¸³Æ®"·Î ÁÖ¾îÁø http://yourserver/scripts/yourscript.py´Â ¿©·¯ºÐÀÇ ¼­¹ö¿¡ ´ëÇÏ¿© "½ÇÇà°¡´É" µð·ºÅ丮°¡ µË´Ï´Ù. (º¸ÅëÀº ÀÌ°ÍÀÌ ±âº»ÀÔ´Ï´Ù). "-u" Ç÷¡±×´Â Ç¥ÁØÀԷ¿¡ ´ëÇÏ¿© ºñ¿ÏÃæ¸ðµå ±×¸®°í ÀÌÁø ¸ðµå¸¦ ÁöÁ¤ÇÕ´Ï´Ù - ÀÌÁø µ¥ÀÌŸ¿Í ÀÛ¾÷ÇÒ ¶§ ÇÊ¿äÇÕ´Ï´Ù

°Ô´Ù°¡, ÀÌ·¯ÇÑ ¹®¸Æ¿¡¼­ »ç¿ëµÉ ¶§ ±× ÆÄÀÏ È®ÀåÀÚ¸¦ À§ÇÏ¿© ".py"¸¦ »ç¿ëÇÏ´Â °ÍÀº ÁÁÀº »ý°¢ÀÌ ¾Æ´Ï¶ó´Â °ÍÀ» ¾Æ´Â »ç¶÷µéÀº ±×°ÍÀ» ±ÇÀåÇÕ´Ï´Ù. (¿©·¯ºÐÀº *.py¸¦ Áö¿ø ¸ðµâÀ» À§ÇÏ¿© ¿¹¾àÇصΰí *.cgi ¶Ç´Â *.cgp¸¦ "ÁÖ ÇÁ·Î±×·¥" ½ºÅ©¸³Æ®¸¦ »ç¿ëÇÏ°í ½ÍÀ» ¼öµµ ÀÖ½À´Ï´Ù). ±×·¸Áö¸¸, ±× ¹®Á¦´Â ÀÌ À©µµ¿ì FAQ Ç׸ñÀ» ¹þ¾î³ª´Â °ÍÀÔ´Ï´Ù.

³×Æ®½ºÄÉÀÌÇÁ ¼­¹ö: ÀÌ ÁÖÁ¦¿¡ °üÇÑ Á¤º¸´Â ´ÙÀ½¿¡ Á¸ÀçÇÕ´Ï´Ù: http://home.netscape.com/comprod/server_central/support/fasttrack_man/programs.htm#1010870


8.2. Á¦ÇѾøÀÌ Å°´­¸²À» Á¡°ËÇÏ´Â ¹ý?

msvcrt ¸ðµâÀ» »ç¿ëÇϼ¼¿ä. ÀÌ°ÍÀº ÆÄÀ̽ã 1.5À̻󿡼­ Ç¥ÁØ À©µµ¿ì-Á¾¼ÓÀû È®ÀåÀÔ´Ï´Ù. ±× ¸ðµâÀº ÇÔ¼ö kbhit()À» Á¤ÀÇÇÏ¿© Å°º¸µå ´­¸²ÀÌ ÀÖ´ÂÁö¸¦ Á¡°ËÇÕ´Ï´Ù; ¶ÇÇÑ getch()·Î´Â ¹ÝÇâ¾øÀÌ ÇϳªÀÇ ¹®ÀÚ¸¦ ¾ò½À´Ï´Ù. ±×°Í ¸»°íµµ ´Ù¸¥ ÈǸ¢ÇÑ °ÍµéÀÌ ¸¹½À´Ï´Ù.

("keypress"¸¦ Ž»öÇÏ¿© À¯´Ð½º¸¦ À§ÇÑ ÇØ´äÀ» ã¾Æ º¸¼¼¿ä.)


8.3. $PYTHONPATH

MS-DOS ¿¡¼­ ÆÄ»ýµÈ ȯ°æ¿¡¼­ »ç¿ëµÇ´Â, $PYTHONPATH¿Í °°Àº À¯´Ð½º ¸í·É¾î´Â PYTHONPATH·Î, ´Þ·¯ Ç¥½Ã ¾øÀÌ ¼³Á¤ÇÕ´Ï´Ù. PYTHONPATH´Â ¶óÀ̺귯¸® ÆÄÀÏÀÇ À§Ä¡¸¦ ÁöÁ¤Çϴµ¥¿¡ À¯¿ëÇÕ´Ï´Ù.


8.4. ³»¾î¾²±â ±¸¹® ¿¡·¯

FAQ ´Â ÅÇÀ» »ó¿ëÇÏ´Â °ÍÀ» ±ÇÀåÇÏÁö ¾Ê½À´Ï´Ù, ±×¸®°í ±ÍµµÀÇ ÆÄÀ̽㠽ºÅ¸ÀÏ °¡À̵å´Â 4 °³ÀÇ °ø¹éÀ» ¹èÆ÷µÈ ÆÄÀ̽ã Äڵ忡 ±ÇÀåÇÕ´Ï´Ù; ÀÌ°ÍÀº ¶ÇÇÑ EmacsÀÇ ÆÄÀ̽㠸ðµåÀÇ ±âº»°ªÀÔ´Ï´Ù; ´ÙÀ½À» ÂüÁ¶Çϼ¼¿ä

    essays/styleguide.html
¾î¶² ¿¡µðÅÍ¿¡¼­µµ ÅÇ°ú °ø¹éÀ» È¥¿ëÇÏ´Â °ÍÀº ÁÁÁö ¾ÊÀº »ý°¢ÀÔ´Ï´Ù. MSVC ¿ª½Ã ÀÌ·± °üÁ¡¿¡¼­ º¸¸é ´Ù¸£Áö ¾Ê½À´Ï´Ù, ±×¸®°í ½±°Ô °ø¹éÀ» »ç¿ëÇϵµ·Ï ¼³Á¤µÇ¾î ÀÖ½À´Ï´Ù: Tools -> Options -> Tabs¸¦ ¼±ÅÃÇϽðí, ÆÄÀÏ Å¸ÀÔ "Default"¿¡ "ÅÇ Å©±â(Tab size)"¿Í "µé¿©¾²±â Å©±â(Indent size)"¸¦ 4·Î ¼³Á¤ÇϽðí, ±×¸®°í "°ø¹é »ðÀÔ(Insert spaces)" ¶óµð¿À ¹öÆ°À» ¼±ÅÃÇϼ¼¿ä.

¾ÕÂÊÀÇ °ø¹é¿¡¼­ ÅÇ°ú °ø¹éÀÇ È¥¿ëÀÌ ¹®Á¦¸¦ ÀÏÀ¸Å°´ÂÁö Àǽɵǽøé, ÆÄÀ̽ãÀ» -t ½ºÀ§Ä¡·Î ½ÇÇàÇϽôø°¡, Tools/Scripts/tabnanny.py¸¦ ½ÇÇà½ÃÄѼ­ ÀÏ°ýó¸® ¸ðµå·Î µð·ºÅ丮 Æ®¸®¸¦ Á¡°ËÇϼ¼¿ä. .


8.5. À©µµ¿ì¿¡¼­ ¾î¶»°Ô os.kill()À» Èä³»³»³ª¿ä?

win32api¸¦ »ç¿ëÇϼ¼¿ä:

    def kill(pid):
        """kill function for Win32"""
        import win32api
        handle = win32api.OpenProcess(1, 0, pid)
        return (0 != win32api.TerminateProcess(handle, 0))


8.6. ¿Ö os.path.isdir()ÀÌ NT °øÀ¯ µð·ºÅ丮¿¡¼­ ½ÇÆÐÇÏ´ÂÁö¿ä?

ÇØ´äÀº Ç×»ó "\\"¸¦ °øÀ¯ µå¶óÀ̺êÀÇ ¸¶Áö¸·¿¡ Ãß°¡ÇÏ´Â °ÍÀÔ´Ï´Ù.

  >>> import os
  >>> os.path.isdir( '\\\\rorschach\\public')
  0
  >>> os.path.isdir( '\\\\rorschach\\public\\')
  1
[ºí·¹ÀÌÅ© À©Æ° (Blake Winton)ÀÇ ´ë´ä] °øÀ¯ µå¶óÀ̺êÀÇ µð·ºÅ丮¿¡¼­ "Start >> Run"À» ¼öÇàÇÏ·Á°í ÇÒ ¶§ °°Àº ¹®Á¦°¡ ÀÖ¾ú½À´Ï´Ù. ¸¸¾à "\\rorschach\public"¸¦ »ç¿ëÇß´Ù¸é, ½ÇÆÐÇßÀ» °ÍÀÌÁö¸¸, \\rorschach\public\"¸¦ »ç¿ëÇϸé, ±×°ÍÀº ÀÛµ¿ÇÒ °ÍÀÔ´Ï´Ù. ±× ¹®Á¦¿¡ °üÇÏ¿©´Â, os.stat() ¿ª½Ã °°½À´Ï´Ù (ÀÚ, "\\\\rorschach\\public"¿¡ ´ëÇÏ¿© ¿¡·¯ ¸ÞÁöÁö¸¦ ³»Áö¸¸, ¿©·¯ºÐÀº ÀÌÇØÇÏ½Ç °Ì´Ï´Ù)...

ÀÌ·¯ÇÑ ÀÏÀÌ ÀϾ´Â °Í¿¡ °üÇÏ¿© ³ª¸§´ë·ÎÀÇ ÀÌ·ÐÀÌ ÀÖÁö¸¸, ±×°ÍÀº ´ÜÁö ÀÌ·ÐÀÏ »ÓÀÔ´Ï´Ù. NT °øÀ¯ µð·ºÅ丮, ±×¸®°í ÀϹÝÀûÀÎ µð·ºÅ丮 »çÀÌÀÇ Â÷À̸¦ ÀÌÇØÇØ¾ß ÇÕ´Ï´Ù. "\\rorschach\public"´Â µð·ºÅ丮°¡ ¾Æ´Ï¶ó, ±×°ÍÀº _½ÇÁ¦·Î´Â_ IPC¸¦ º»¶á °ÍÀÔ´Ï´Ù. ÀÌ°ÍÀº ÀÏÁ¾ÀÇ ¾çµµµÈ ½Å¿ëÀ¸·Î¼­, ³×Æ®¿öÅ© µå¶óÀ̺긦 ¦Áþ±âÇÒ ¶§¿¡, "\\rorschach\public\utils"ÀÌ ¾Æ´Ï¶ó ¿À·ÎÁö "\\rorschach\public"À¸·Î¸¸ ¦ÁöÀ» ¼ö ÀÖ´Ù´Â »ç½Ç¿¡ ±Ù°ÅÇÏ°í ÀÖ½À´Ï´Ù.

[funkster@midwinter.comÀÇ Çؼ³] ±×°ÍÀº ½ÇÁ¦·Î´Â ÆÄÀ̽ãÀÇ ¹®Á¦°¡ ¾Æ´Õ´Ï´Ù, ÆÄÀ̽ãÀº Àß ÀÛµ¿ÇÕ´Ï´Ù; ´ÙÀ½Àº À©µµ¿ìÀÇ ³×Æ®¿öÅ© µå¶óÀ̺꿡 °üÇÏ¿© ¾à°£Àº È¥¶õ½º·¯¿î °ÍµéÀ» ±ú²ýÀÌ Á¤¸®ÇÏ°í ÀÖ½À´Ï´Ù.

µå¶óÀÌºê ¹®ÀÚ Ã³·³ °øÀ¯ ¿äÁ¡À» »ý°¢ÇØ º¸¸é µµ¿òÀÌ µË´Ï´Ù. ¿¹Á¦:

        k:         µð·ºÅ丮°¡ ¾Æ´Ï´Ù
        k:\        µð·ºÅ丮ÀÌ´Ù
        k:\media   µð·ºÅ丮ÀÌ´Ù
        k:\media\  µð·ºÅ丮°¡ ¾Æ´Ï´Ù
"k:"¸¦ "\\conky\foo"·Î ´ëüÇÒ ¶§¿¡µµ °°Àº ±ÔÄ¢ÀÌ Àû¿ëµË´Ï´Ù:
        \\conky\foo          µð·ºÅ丮°¡ ¾Æ´Ï´Ù
        \\conky\foo\         µð·ºÅ丮ÀÌ´Ù
        \\conky\foo\media    µð·ºÅ丮ÀÌ´Ù
        \\conky\foo\media\   µð·ºÅ丮°¡ ¾Æ´Ï´Ù


8.7. PyRun_SimpleFile()ÀÌ À©µµ¿ì¿¡¼­ Ãæµ¹ÇÏÁö¸¸ À¯´Ð½º¿¡¼­´Â ±×·¸Áö ¾Ê½À´Ï´Ù

ÆÄÀ̽ãÀ» ³»ÀåÇÑ ¾îÇø®ÄÉÀ̼ÇÀ» À©µµ¿ì·Î À̽ÄÇϸé À¯´Ð½º¿¡¼­´Â Àß ÀÛµ¿ÇÏ´ø PyRun_SimpleFile()ÀÌ ½ÇÆÐÇÑ´Ù´Â ¸¹Àº º¸°í¸¦ º¸¾Æ ¿Ô½À´Ï´Ù. PyRun_SimpleString()Àº µÎ Ç÷§Æû ¸ðµÎ¿¡¼­ Àß ÀÛµ¿ÇÕ´Ï´Ù.

Á¦°¡ »ý°¢Çϱâ·Î ÀÌ°ÍÀº ±× ¾îÇø®ÄÉÀ̼ÇÀÌ Python15.DLL°ú´Â ´Ù¸¥ Á¾·ùÀÇ ÄÄÆÄÀÏ·¯ ±ê¹ß ¸ðµÒÀ¸·Î ÄÄÆÄÀÏ µÇ¾ú±â ¶§¹®¿¡ ¹ß»ýÇÕ´Ï´Ù.¾î¶² ÄÄÆÄÀÏ·¯ ±ê¹ßµéÀº Ç¥ÁØ I/O ¶óÀ̺귯¸®¿¡ ¿µÇâÀ» ¹ÌÄ¡´Â °ÍÀ¸·Î ÆǴܵǴµ¥ ±×·¯ÇÑ ¹æ½ÄÀ¸·Î ´Ù¸¥ ±ê¹ßÀ» »ç¿ëÇϸé È£ÃâÀ» ½ÇÆÐÇϵµ·Ï ¸¸µå´Â °Í °°½À´Ï´Ù. ±×°ÍÀ» ºñ-µð¹ö±× ´ÙÁß-¾²·¹µå DLL·Î ¼³Á¤ÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù (¸í·É¾î ¶óÀο¡¼­ /MD¸¦ ¼³Á¤Çϰųª, ÇÁ·ÎÁ§Æ® ¼³Á¤ÇÏ¿¡¼­ MSVC¸¦ ÅëÇÏ¿© ¼³Á¤µÉ ¼ö ÀÖ½À´Ï´Ù -> C++/Code »ý¼º ±×¸®°í "Use rum-time library" ¼±ÅÃ.)

¶Ç ÁÖ¸ñÇÒ °ÍÀº µð¹ö±×¸¦ ¹èÆ÷ ¹öÀü¿¡ È¥ÇÕ-ÀÏÄ¡ÇÒ¼ö ¾ø´Ù´Â °ÍÀÔ´Ï´Ù. ¸¸¾à µð¹ö±× ´ÙÁß ¾²·¹µå DLLÀ» »ç¿ëÇϱ⸦ ¿øÇϽøé, ¸ðµâ¿¡´Â _¹Ýµå½Ã_ "_d"°¡ ±âº» À̸§¿¡ Ãß°¡µÇ¾ß ÇÕ´Ï´Ù.


8.8. _tkinter ¼öÀÔÀÌ À©µµ¿ì 95/98¿¡¼­ ½ÇÆÐÇÕ´Ï´Ù

¶§·Î´Â, _tkinter ¼öÀÔÀÌ À©µµ¿ì 95 ¶Ç´Â 98¿¡¼­ ½ÇÆÐÇϴµ¥, ´ÙÀ½°ú °°Àº ¸Þ½ÃÁö·Î ºÒÆòÇÕ´Ï´Ù:

  ImportError: DLL load failed: One of the library files needed
  to run this application cannot be found. - 
  ÀÌ ¾îÇø®ÄÉÀ̼ÇÀ» ½ÇÇàÇϴµ¥ ÇÊ¿äÇÑ ¶óÀ̺귯¸® ÆÄÀÏÁß Çϳª¸¦ ãÀ» ¼ö ¾ø½À´Ï´Ù.
¾Æ¸¶µµ Tcl/Tk¸¦ ¼³Ä¡ÇÏÁö ¾Ê¾ÒÀ» ¼öµµ ÀÖ½À´Ï´Ù, ±×·¯³ª ºÐ¸íÈ÷ Tcl/Tk¸¦ ¼³Ä¡Çϼ̰í, ¿øÇÏ´Â ¾îÇø®ÄÉÀ̼ÇÀÌ Á¤È®ÇÏ°Ô ÀÛµ¿Çϸé, ¹®Á¦´Â ¾Æ¸¶µµ ¼³Ä¡±â°¡ autoexec.bat ÆÄÀÏÀ» Á¤È®ÇÏ°Ô ¼öÁ¤ÇÏÁö ¾Ê¾ÒÀ» ¼ö ÀÖ½À´Ï´Ù. ¼³Ä¡±â´Â PATH ȯ°æ º¯¼ö¸¦ Tcl/TkÀÇ 'bin' ÇϺεð·ºÅ丮¸¦ Æ÷ÇÔÇϵµ·Ï º¯°æÇÏ´Â ¹®ÀåÀ» Ãß°¡ÇÏ·Á°í ÇÕ´Ï´Ù, ±×·¯³ª ¶§·Î´Â ÀÌ ÆíÁýÀÌ Àß ÀÛµ¿ÇÏÁö ¾Ê½À´Ï´Ù. ³ëÆ®Æеå·Î ±×°ÍÀ» ¿­¾îº¸¸é ¹«¾ùÀÌ ¹®Á¦ÀÎÁö º¸ÅëÀº ¾Ë ¼ö ÀÖ½À´Ï´Ù.

(¶Ç ÇϳªÀÇ Ãß°¡ ÈùÆ®¶ó¸é, µ¥À̺ñµå ÀÚÇÁ¶õ½ºÅ°(David Szafranski)°¡ ÁöÀûÇÑ ¹Ù¿¡ ÀÇÇϸé: ¿©·¯ºÐÀº ¿©±â¿¡¼­ ±ä ÆÄÀÏÀ̸§À» »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù; ¿¹¸¦ µé¾î. C:\Program Files\Tcl\bin ´ë½Å¿¡ C:\PROGRA~1\Tcl\binÀ» »ç¿ëÇϼ¼¿ä)


8.9. ³»·Á ¹ÞÀº ¹®¼­¸¦ À©µµ¿ì¿¡¼­ ÃßÃâÇÒ ¼ö ¾ø½À´Ï´Ù

°¡²û, ¹®¼­ ÆÐÅ°Áö¸¦ À©µµ¿ì ¸Ó½Å¿¡ À¥ ºê¶ó¿ìÀú¸¦ »ç¿ëÇÏ¿© ³»·Á ¹ÞÀ» ¶§, ±× ÀúÀåµÈ ÆÄÀÏÀÇ È®ÀåÀÚ°¡ .EXE·Î ³¡³³´Ï´Ù. ÀÌ°ÍÀº ½Ç¼öÀÔ´Ï´Ù; È®ÀåÀÚ´Â .TGZ°¡ µÇ¾î¾ß ÇÕ´Ï´Ù.

°£´ÜÈ÷ ³»·Á¹ÞÀº ÆÄÀÏÀ» È®ÀåÀÚ°¡ .TGZ°¡ µÇµµ·Ï ´Ù½Ã À̸§ÁöÀ¸¼¼¿ä, ±×·¯¸é WinZipÀÌ ±×°ÍÀ» ó¸®ÇÒ °ÍÀÔ´Ï´Ù. (¸¸¾à WinZipÀÌ ±×·¸°Ô ÇÏÁö ¸øÇϸé, ´õ »õ·Î¿î ¹öÀüÀ» ´ÙÀ½¿¡¼­ ³»·Á ¹ÞÀ¸¼¼¿ä (http://www.winzip.com/.)


8.10. Py_RunSimpleFile()¸¦ ÀÛµ¿½Ãų ¼ö ¾ø½À´Ï´Ù.

ÀÌ°ÍÀº ÄÄÆÄÀÏ·¯ º¥´õ, ¹öÀü ±×¸®°í (¾Æ¸¶µµ) ¼±ÅûçÇ׿¡µµ ´ë´ÜÈ÷ ¹Î°¨ÇÑ ¹®Á¦ÀÔ´Ï´Ù ¸¸¾à ¿©·¯ºÐÀÇ ³»Àå ÇÁ·Î±×·¥¿¡ ÀÖ´Â FILE* ±¸Á¶°¡ ÆÄÀ̽ã ÀÎÅÍÇÁ¸®ÅÍ°¡ °¡Á¤ÇÑ °Í°ú µ¿ÀÏÇÏÁö ¾Ê´Ù¸é ±×°ÍÀº ÀÛµ¿ÇÏÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù.

ÆÄÀ̽ã 1.5.* (python15.dll) DLLµéÀº ¸ðµÎ MS VC++ 5.0°ú multithreading-DLL ¼±ÅûçÇ×(¾Æ¸¶µµ, /MD)À¸·Î ÄÄÆÄÀÏ µË´Ï´Ù.

ÄÄÆÄÀÏ·¯ ȤÀº ±ê¹ßÀ» º¯°æÇÒ ¼ö ¾ø´Ù¸é, Py_RunSimpleString()À» »ç¿ëÇØ º¸¼¼¿ä. ÀÓÀÇÀÇ ÆÄÀÏÀ» ½ÇÇàÇϵµ·Ï ¸¸µå´Â ²Ä¼ö´Â ¿©·¯ºÐÀÇ ÆÄÀÏÀ̸§À» Àμö·Î ÁÖ¾î execfile()¸¦ È£ÃâÇϵµ·Ï ±¸¼ºÇÏ´Â °ÍÀÔ´Ï´Ù.


8.11. À©µµ¿ì¸¦ À§ÇÑ Freeze´Â ¾îµð¿¡ ÀÖ³ª¿ä?

("Freeze"´Â ÆÄÀ̽ã ÇÁ·Î±×·¥À» µ¶¸³ÀûÀÎ ÇϳªÀÇ ½ÇÇàÆÄÀÏ·Î ÀûÀçÇØ ÁÖ´Â ÇÁ·Î±×·¥ÀÔ´Ï´Ù. ÄÄÆÄÀÏ·¯°¡ ¾Æ´Ï¸ç, ÇÁ·Î±×·¥ÀÌ ´õ »¡¶óÁöÁö´Â ¾Ê½À´Ï´Ù, ±×·¸Áö¸¸ (°°Àº ¿î¿µÃ¼Á¦¿Í CPU¸¦ °¡Áø Ç÷§Æû¿¡) Á» ´õ ½±°Ô ¹èÆ÷°¡´ÉÇÕ´Ï´Ù. ´õ ÀÚ¼¼ÇÑ »çÇ×À» ¿øÇÏ½Ã¸é ±× ÇÁ·Î±×·¥ÀÇ READMEÆÄÀÏÀ» º¸½Ê½Ã¿ä.)

À©µµ¿ì¿¡¼­ freeze¸¦ »ç¿ëÇÒ ¼ö´Â ÀÖÁö¸¸, ¼Ò½º¸¦ ³»·Á ¹Þ¾Æ¾ß¸¸ ÇÕ´Ï´Ù (http://www.python.org/download/download_source.html¸¦ ÂüÁ¶Çϼ¼¿ä). ÀÌ°ÍÀº ÆÄÀ̽ã 1.5.2 (±× ÀÌÈÄÀÇ ¹öÀü)¿¡¸¸ ±ÇÀåÇÕ´Ï´Ù; ´õ ¿À·¡µÈ ¹öÀüÀº Àß ÀÛµ¿ÇÏÁö ¾Ê½À´Ï´Ù.

¸¶ÀÌÅ©·Î¼ÒÇÁÆ® VC++ 5.0 ÄÄÆÄÀÏ·¯°¡ ÇÊ¿äÇÕ´Ï´Ù (¾Æ¸¶ 6.0¿¡µµ ¿ª½Ã ÀÛµ¿ÇÒ °ÍÀÔ´Ï´Ù). ÆÄÀ̽ãÀ» ±¸ÃàÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù -- ÇÁ·ÎÁ§Æ® ÆÄÀϵéÀº ¸ðµÎ PCbuild µð·ºÅ丮¿¡ Á¸ÀçÇÕ´Ï´Ù.

freeze ÇÁ·Î±×·¥Àº ±× ¼Ò½ºÆ®¸®ÀÇ Tools\freeze ÇϺεð·ºÅ丮¿¡ ÀÖ½À´Ï´Ù.


8.12. *.pyd ÆÄÀÏÀº DLL°ú °°Àº °Ç°¡¿ä?

±×·¸½À´Ï´Ù, .pyd ÆÄÀÏÀº dllÀÔ´Ï´Ù. ±×·¯³ª ¾à°£ÀÇ Â÷ÀÌ´Â ÀÖ½À´Ï´Ù. foo.pyd¶ó´Â À̸§ÀÇ DLLÀ» °¡Áö°í °è½Å´Ù¸é, ±× ÆÄÀÏÀº ¹Ýµå½Ã ÇÔ¼ö initfoo()¸¦ °¡Áö°í ÀÖ¾î¾ß ÇÕ´Ï´Ù. ±×·¯¸é ÆÄÀ̽㿡 "import foo"¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ°í, ÆÄÀ̽ãÀº foo.pyd¸¦ Ž»öÇÒ °ÍÀÔ´Ï´Ù (»Ó¸¸¾Æ´Ï¶ó foo.py, foo.pycµµ Ž»öÇÕ´Ï´Ù) ±×¸®°í ¹ß°ßÇÑ´Ù¸é, ÃʱâÈ­¸¦ Çϱâ À§ÇÏ¿© initfoo()¸¦ È£ÃâÇÏ·Á°í ÇÕ´Ï´Ù. .exe¸¦ foo.lib¿Í ¿¬°áÇØ ³õÁö ¾Ê¾Ò´Ù¸é, À©µµ¿ì´Â ¹Ýµå½Ã ±× DLLÀÌ Á¸ÀçÇϱ⸦ ¿ä±¸ÇÒ °ÍÀÔ´Ï´Ù.

ÁÖ¸ñÇÒ °ÍÀº foo.pyd¿¡ ´ëÇÑ Å½»ö °æ·Î´Â PYTHONPATHÀ̸ç, À©µµ¿ì »ç¿ëÀÚ°¡ foo.dllÀ» Ž»öÇϱâ À§ÇÏ¿© »ç¿ëÇÏ´Â ±× °æ·Î¿Í´Â °°Áö ¾Ê´Ù´Â °ÍÀÔ´Ï´Ù. ¶ÇÇÑ, foo.pyd´Â ÇÁ·Î±×·¥À» ½ÇÇàÇϱâ À§ÇÏ¿© Á¸ÀçÇØ¾ß ÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù, ¹Ý¸é¿¡ ÇÁ·Î±×·¥À» dll°ú ¿¬°áÇØ ³õ¾Ò´Ù¸é, ±× dllÀº ÇʼöÀûÀ¸·Î ÀÖ¾î¾ß ÇÕ´Ï´Ù. ¹°·Ð, foo.pyd´Â "import foo"¸¦ »ç¿ëÇϱ⸦ ¿øÇÑ´Ù¸é ÇÊ¿äÇÕ´Ï´Ù. dll¿¡¼­, ¿¬°áÀº ¼Ò½ºÄڵ忡 __declspec(dllexport)À¸·Î ¼±¾ðµË´Ï´Ù. .pyd¿¡¼­, ¿¬°áÀº ÀÌ¿ë°¡´ÉÇÑ ÇÔ¼öµéÀÇ ¸ñ·Ï¾È¿¡ Á¤Àǵ˴ϴÙ.


8.13. cw3215mt.dll ºÐ½Ç (¶Ç´Â cw3215.dll¹ß°ß ºÒ´É)

À©µµ¿ì¿¡¼­ Tkinter¸¦ »ç¿ëÇÒ ¶§, °¡²û¾¿, cw3215mt.dll ¶Ç´Â cw3215.dllÀÌ ¾ø´Ù´Â ¿¡·¯ ¸Þ½ÃÁö¸¦ ¸ÂÀÌÇÕ´Ï´Ù.

¿øÀÎ: ±¸Çü Tcl/Tk DLLÀ» ¿©·¯ºÐÀÇ °æ·Î (¾Æ¸¶µµ C:\Windows)¿¡ ÀÖ´Â cygwinÀ¸·Î ±¸ÃàÇß½À´Ï´Ù. Tcl/Tk Ç¥ÁØ ¼³Ä¡¿¡ ÀÖ´Â Tcl/Tk DLLÀ» »ç¿ëÇØ¾ß ÇÕ´Ï´Ù. (ÆÄÀ̽ã 1.5.2¿¡ ÇÔ²² µþ·Á¿É´Ï´Ù).


8.14. ÆÄÀ̽㠽ºÅ©¸³Æ®¸¦ ½ÇÇàÆÄÀÏ·Î ¸¸µå´Â ¹ý:

[ºí·¹ÀÌÅ© Ä¿¹ö·¿(Blake Coverett)]

Win2K:

Ç¥ÁØ ¼³Ä¡±â´Â ÀÌ¹Ì .py È®ÀåÀÚ¸¦ ÆÄÀÏ Å¸ÀÔ(Python.File)¿¡ ¿¬°áÇØ µÎ°í ÀÖ½À´Ï´Ù ±×¸®°í ±× ÆÄÀÏ Å¸ÀÔ¿¡ ÀÎÅÍÇÁ¸®Å͸¦ ½ÇÇàÇÏ´Â °³¹æ ¸í·É¾î¸¦ ÇÒ´çÇÕ´Ï´Ù (D:\Program Files\Python\python.exe "%1" %*). ÀÌ°ÍÀ¸·Î ÃæºÐÈ÷ ½ºÅ©¸³Æ® ÆÄÀÏÀ» ¸í·É¾î ÇÁ·ÒÇÁÆ®¿¡¼­ 'foo.py'·Î ½ÇÇà°¡´ÉÇÏ°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸¸¾à È®ÀåÀÚ ¾øÀÌ ´Ü¼øÈ÷ 'foo'¶ó°í ŸÀÚÇÔÀ¸·Î½á ±× ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇÒ ¼ö Àֱ⸦ ¿øÇÑ´Ù¸é .py¸¦ PATHEXT ȯ°æ º¯¼ö¿¡ Ãß°¡ÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù.

WinNT:

À§¿¡ Àü¼úÇÑ´ë·Î ¼³Ä¡µÈ ´Ü°è¸¦ °ÅÃļ­ ½ºÅ©¸³Æ®¸¦ 'foo.py'·Î ½ÇÇàÇÒ ¼ö ÀÖ½À´Ï´Ù, ±×·¯³ª NT ¸í·É¾î 󸮱âÀÇ °íÁúÀûÀÎ ¹ö±×·Î ÀÌ·±½ÄÀ¸·Î ½ÇÇàµÈ ½ºÅ©¸³Æ®ÀÇ ÀԷ°ú Ãâ·ÂÀ» ¹æÇâÀüȯÇÒ ¼ö ¾ø½À´Ï´Ù. ÀÌ°ÍÀº ¶§·Î Áß¿äÇÑ ¹®Á¦ÀÔ´Ï´Ù.

WinNTÇÏ¿¡¼­ ÆÄÀ̽㠽ºÅ©¸³Æ®¸¦ ½ÇÇà°¡´ÉÇÏ°Ô ÇÏ´Â ÀûÀýÇÑ ¸¶¹ýÀ̶ó¸é ±× ÆÄÀÏ¿¡ È®ÀåÀÚ .cmd¸¦ ÇÒ´çÇÏ°í ´ÙÀ½À» ù ¹ø° ¶óÀÎÀ¸·Î Ãß°¡ÇÏ´Â °ÍÀÔ´Ï´Ù:

    @setlocal enableextensions & python -x %~f0 %* & goto :EOF
Win9x:

[ºê·ç½º ¿¡ÄÌ(Bruce Eckel)ÀÇ ¹è·Á]

  @echo off
  rem = """
  rem run python on this bat file. Needs the full path where
  rem you keep your python files. The -x causes python to skip
  rem the first line of the file:
  python -x c:\aaa\Python\\"%0".bat %1 %2 %3 %4 %5 %6 %7 %8 %9
  goto endofpython
  rem """
  # The python program goes here:
  print "hello, Python"
  # For the end of the batch file:
  rem = """
  :endofpython
  rem """


8.15. ¼³Ä¡±â·Î ºÎÅÍÀÇ CTL3D32 ¹öÀü¿¡ °üÇÑ °æ°í

ÆÄÀ̽㠼³Ä¡±â´Â ´ÙÀ½°ú °°Àº °æ°í¸¦ ³À´Ï´Ù:

  ÀÌ ¹öÀüÀº CTL3D32.DLLÀ» »ç¿ëÇÏ¸ç ¿Ã¹Ù¸¥ ¹öÀüÀÌ ¾Æ´Õ´Ï´Ù.
  ÀÌ ¹öÀüÀº À©µµ¿ì NT ¾îÇø®ÄÉÀ̼ǿ¡¸¸ »ç¿ëµÉ ¼ö ÀÖ½À´Ï´Ù.
[ÆÀ ÇÇÅͽº(Tim Peters)] ÀÌ°ÍÀº Microsoft DLL·Î¼­, ¹®Á¦ÀÇ ±Ù¿øÀ¸·Î ¾Ç¸í ³ô½À´Ï´Ù. ÀÌ ¸Þ½ÃÁö°¡ ¶æÇÏ´Â ¹Ù´Â: ¿©·¯ºÐÀÇ ¿î¿µÃ¼Á¦¿¡ ÀÌ DLLÀÌ ¸ÂÁö ¾Ê´Â ¹öÀüÀ» °¡Áö°í ÀÖ´Ù´Â ¶æÀÔ´Ï´Ù. ÆÄÀ̽㠼³Ä¡·Î´Â ÀÌ·¯ÇÑ °ÍÀ» ¾ß±â ÇÏÁö ¾Ê½À´Ï´Ù -- ÀÌ Àü¿¡ ¼³Ä¡ÇÑ ´Ù¸¥ ¾î¶² °ÍÀÌ ¿î¿µÃ¼Á¦¿¡ µþ·Á¿Â DLLÀ» µ¤¾î½èÀ» °ÍÀÔ´Ï´Ù. (¾Æ¸¶µµ ¿À·¡µÈ ½¦¾î¿þ¾î Á¾·ùÀÏ°Ì´Ï´Ù, ±×·¯³ª Áö±ÝÀ¸·Î¼­´Â ¸»ÇÒ ¹æ¹ýÀÌ ¾ø½À´Ï´Ù). ¸¸¾à "CTL3D32"À» (¿¹¸¦ µé¾î, ¾ËŸºñ½ºÅ¸ °°Àº) ´Ù¸¥ °Ë»ö ¿£Áø »ç¿ëÇÏ¿© °Ë»öÇغ¸¸é, ¼ö¹é ¼öõÀÇ À¥ÆäÀÌÁö¿¡¼­ ¸ðµç Á¾·ùÀÇ ¼³Ä¡ ÇÁ·Î±×·¥¿¡¼­ °°Àº ¹®Á¦¿¡ °üÇÏ¿© ºÒÆòÇÏ°í ÀÖ´Â °ÍÀ» º¸½Ç ¼ö ÀÖ½À´Ï´Ù. ±×°ÍµéÀ» º¸½Ã¸é ¿©·¯ºÐÀÇ ½Ã½ºÅÛ¿¡ Á¤È®ÇÑ ¹öÀüÀ» À缳ġÇÏ´Â ¹æ¹ýÀ» ¾Æ½Ç ¼ö ÀÖÀ» °Ì´Ï´Ù. (ÆÄÀ̽ãÀÌ ÀÌ ¹®Á¦¸¦ ¾ß±âÇÏ´Â °ÍÀÌ ¾Æ´Ï±â ¶§¹®¿¡, ¿ì¸®´Â ¹®Á¦¸¦ ÇØ°áÇÒ ¼ö ¾ø½À´Ï´Ù).

µ¥À̺ñµå ¿¡ÀÌ ¹öÆ°(David A Burton)ÀÌ ÀÌ ¹®Á¦¸¦ ÇØ°áÇÏ´Â ÀÛÀº ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ¿´½À´Ï´Ù. http://www.burtonsys.com/download.html¿¡ °¡¼Å¼­ "ctl3dfix.zip"¿¡ µþ±ïÇغ¸¼¼¿ä.


8.16. ¾î¶»°Ô ÆÄÀ̽ãÀ» À©µµ¿ìÀÇ ¾îÇø®ÄÉÀ̼ǾÈÀ¸·Î ³»ÀåÇÒ ¼ö Àִ°¡?

Edward K. Ream <edream@tds.net> ¾¸

ÆÄÀ̽ã ÀÎÅÍÇÁ¸®Å͸¦ À©µµ¿ì ¾îÇø®ÄÉÀ̼ǿ¡ ³»ÀåÇÏ´Â °ÍÀº ´ÙÀ½°ú °°ÀÌ ¿ä¾àµÉ ¼ö ÀÖ½À´Ï´Ù:

1. ÆÄÀ̽ãÀ» ¿©·¯ºÐÀÇ .exe ÆÄÀÏ ¾ÈÀ¸·Î Á÷Á¢ÀûÀ¸·Î ±¸ÃàÇØ ³ÖÁö ¸¶¼¼¿ä. À©µµ¿ì¿¡¼­´Â, ÆÄÀ̽ãÀº ¹Ýµå½Ã DLLÀÌ µÇ¾î¾ß ±× ÀÚü·Î DLLÀÎ ¸ðµâµéÀ» ¼öÀÔÇÒ ¼ö ÀÖ½À´Ï´Ù. (ÀÌ°ÍÀÌ °¡Àå Áß¿äÇÑ ¹®¼­È­µÇÁö ¾ÊÀº »ç½ÇÀÔ´Ï´Ù.) ´ë½Å¿¡, python15.dll¿¡ ¿¬°áÇϼ¼¿ä; ±×°ÍÀº ÀüÇüÀûÀ¸·Î c:\Windows\System¿¡ ¼³Ä¡µË´Ï´Ù.

ÆÄÀ̽㿡 Á¤Àû ȤÀº µ¿ÀûÀ¸·Î ¿¬°áÇÒ ¼ö ÀÖ½À´Ï´Ù. Á¤ÀûÀ¸·Î ¿¬°áÇÑ´Ù´Â °ÍÀº python15.lib¿¡ ´ëÇÏ¿© ¿¬°áÇÑ´Ù´Â °ÍÀ» ÀǹÌÇÕ´Ï´Ù. °áÁ¡Àº, ¸¸¾à ½Ã½ºÅÛ¿¡ python15.dllÀÌ Á¸ÀçÇÏÁö ¾Ê´Â´Ù¸é ¾îÇø®ÄÉÀ̼ÇÀÌ ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù´Â °ÍÀÔ´Ï´Ù.

ÀϹÝÀû ÁÖÀÇ: python15.libÀº python.dll¿¡ »óÀÀÇÏ¿© À̸¥¹Ù "import lib"À¸·Î ºÒ¸®¿ó´Ï´Ù. ±×°ÍÀº ´Ü¼øÈ÷ ¿¬°áÀÚ¸¦ À§ÇÏ¿© ½Éº¼À» Á¤ÀÇÇÒ »ÓÀÔ´Ï´Ù.

º¼·£µå»çÀÇ ÁÖÀÇ: python15.lib¸¦ Coff2Omf.exeÀ» »ç¿ëÇÏ¿© ¸ÕÀú OMF Æ÷¸ËÀ¸·Î º¯È¯Çϼ¼¿ä.

µ¿ÀûÀ¸·Î ¿¬°áÇÏ°Ô µÇ¸é ¿¬°á ¼±ÅûçÇ×µéÀ» ´ë´ÜÈ÷ ´Ü¼øÇÏ°Ô ÇÒ ¼ö ÀÖ½À´Ï´Ù; ¸ðµç °ÍÀº ½ÇÇà½Ã¿¡ ÀϾ´Ï´Ù. ¿©·¯ºÐÀÇ ÄÚµå´Â python15.dllÀ» À©µµ¿ìÀÇ LoadLibraryEx ·çƾÀ» »ç¿ëÇÏ¿© ÀûÀçÇÏ¿©¾ß ÇÕ´Ï´Ù. ±× ÄÚµå´Â ¶ÇÇÑ À©µµ¿ìÀÇ GetProcAddress ·çƾ¿¡ ÀÇÇÏ¿© ȹµæµÈ Æ÷ÀÎÅ͸¦ »ç¿ëÇÏ¿© python15.dll¿¡ ÀÖ´Â Á¢±Ù ·çƾ°ú µ¥ÀÌŸ¸¦ (Áï ´Ù½Ã ¸»Çϸé, ÆÄÀ̽ãÀÇ C API¸¦) »ç¿ëÇÏ¿©¾ß ÇÕ´Ï´Ù. ¸¶Å©·Î´Â ÀÌ·¯ÇÑ Æ÷ÀÎÅ͸¦ ÆÄÀ̽ãÀÇ C API¿¡ ÀÖ´Â ·çƾÀ» È£ÃâÇÏ´Â ¾î¶°ÇÑ C Äڵ忡µµ Åõ¸íÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

2. SWIGÀ» »ç¿ëÇϽŴٸé, ÆÄÀ̽ãÀÇ "È®Àå ¸ðµâ"À» ÀÛ¼ºÇÏ´Â °ÍÀÌ ½¬¿îµ¥ ¾îÇÃÀÇ µ¥ÀÌŸ¿Í ¸Þ½îµå¸¦ ÆÄÀ̽㿡¼­ »ç¿ë°¡´ÉÇϵµ·Ï ¸¸µé¾î ÁÝ´Ï´Ù. SWIGÀº ¿©·¯ºÐÀ» ´ë½ÅÇÏ¿© °ñÄ¡¾ÆÇ ¸ðµç ¹®Á¦µéÀ» ó¸®ÇØ ÁÙ °ÍÀÔ´Ï´Ù. ±× °á°ú´Â C ÄÚµå·Î¼­ _¿©·¯ºÐÀÇ .exe ÆÄÀÏ¿¡_ ¿¬°áÇÏ¿© ÁØ °ÍÀÔ´Ï´Ù.(!) DLLÆÄÀÏÀ» ¸¸µé ÇÊ¿ä´Â _¾ø½À´Ï´Ù_, ±×¸®°í ÀÌ°ÍÀº ¿¬°áÇÏ´Â °ÍÀ» °£´ÜÇÏ°Ô ÇÏ¿© ÁÝ´Ï´Ù.

3. SWIGÀº ÃʱâÈ­ ÇÔ¼ö Çϳª(C ÇÔ¼ö)¸¦ ¸¸µé °ÍÀ̵¥ ±× À̸§Àº ±× È®Àå ¸ðµâÀÇ À̸§¿¡ ´Þ·Á ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, ±× ¸ðµâÀÇ À̸§ÀÌ leo¶ó¸é, ±× ÃʱâÈ­ ÇÔ¼ö´Â initleo()¶ó°í ºÒ¸®¿öÁú °ÍÀÔ´Ï´Ù. ¸¸¾à SWIG shadow Ŭ·¡½º¸¦ »ç¿ëÇϽŴٸé, ±×·¸°Ô »ç¿ëÇÏ¼Å¾ß Çϴµ¥, ±× ÃʱâÈ­ ÇÔ¼ö´Â initleoc()¶ó°í ºÒ¸®¿öÁú °ÍÀÔ´Ï´Ù. ÀÌ°ÍÀº ±í¼÷È÷ ¼ûÀº helper Ŭ·¡½º¸¦ ÃʱâÈ­ Çϴµ¥ ±× Ŭ·¡½º´Â shadow Ŭ·¡½º°¡ »ç¿ëÇÕ´Ï´Ù.

±× C Äڵ带 2´Ü°è¿¡¼­ ¿©·¯ºÐÀÇ .exe ÆÄÀÏ¿¡ ¿¬°áÇÒ ¼ö ÀÖ´Â ÀÌÀ¯´Â ±× ÃʱâÈ­ ÇÔ¼ö¸¦ È£ÃâÇÏ´Â °ÍÀÌ ±× ¸ðµâÀ» ÆÄÀ̽ãÀ¸·Î ¼öÀÔÇÏ´Â °Í°ú µ¿ÀÏÇϱ⠶§¹®ÀÔ´Ï´Ù! (ÀÌ°ÍÀÌ µÎ ¹ø°ÀÇ ¹®¼­È­ µÇÁö ¾ÊÀº Áß¿ä »ç½ÇÀÔ´Ï´Ù.)

4. ¿ä¾àÇϸé, ´ÙÀ½ÀÇ Äڵ带 »ç¿ëÇÏ¿© ÆÄÀ̽ã ÀÎÅÍÇÁ¸®Å͸¦ ¿©·¯ºÐÀÇ È®Àå ¸ðµâ·Î ÃʱâÈ­ÇÒ ¼ö ÀÖ½À´Ï´Ù.

    #include "python.h"
    ...
    Py_Initialize();  // Initialize Python.
    initmyAppc();  // Initialize (import) the helper class.
    PyRun_SimpleString("import myApp") ;  // Import the shadow class.
5. PythonÀÇ C API¿¡´Â µÎ °³ÀÇ ¹®Á¦°¡ Àִµ¥ MSVC ¸»°í ´Ù¸¥ ÄÄÆÄÀÏ·¯¸¦ »ç¿ëÇØ º¸½Ã¸é ±× ¹®Á¦´Â ¸í¹éÇØ Áý´Ï´Ù, MSVC ÄÄÆÄÀÏ·¯´Â python15.dllÀ» ±¸ÃàÇϴµ¥ »ç¿ëµÇ¾ú¾ú½À´Ï´Ù.

ù¹ø° ¹®Á¦: FILE * Àμö¸¦ ÃëÇÏ´Â, À̸¥¹Ù "´ë´ÜÈ÷ °í ¼öÁØ"ÀÇ ÇÔ¼ö´Â ´ÙÁß-ÄÄÆÄÀÏ·¯ ȯ°æ¿¡¼­´Â ÀÛµ¿ÇÏÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù; °¢ ÄÄÆÄÀÏ·¯°¡ FILE ±¸Á¶¸¦ ÀνÄÇÏ´Â °ÍÀÌ ´Þ¶óÁú °ÍÀÔ´Ï´Ù. °æ°í°¡ ÆÄÀ̽㠹®¼­¿¡ Ãß°¡µÇ¾î¾ß ÇÒ °ÍÀÔ´Ï´Ù! ±¸ÇöÀÇ °üÁ¡¿¡¼­ º¸¸é ÀÌ·¯ÇÑ °ÍµéÀº ´ë´ÜÈ÷_Àú_ ¼öÁØ ÇÔ¼ö ÀÔ´Ï´Ù.

µÎ ¹ø° ¹®Á¦: SWIGÀº void ÇÔ¼ö¿¡ ´ëÇÑ Æ÷ÀåÀÚ¸¦ »ý¼ºÇÒ ¶§ ´ÙÀ½ÀÇ Äڵ带 »ý¼ºÇÕ´Ï´Ù:

    Py_INCREF(Py_None);
    _resultobj = Py_None;
    return _resultobj;
¾ÈŸ±õ°Ôµµ, Py_NoneÀº ¸ÅÅ©·Î·Î¼­ python15.dll ¾È¿¡¼­ _Py_NoneStruct¶ó°í ºÒ¸®¿ì´Â º¹ÀâÇÑ µ¥ÀÌŸ ±¸Á¶¸¦ ÂüÁ¶Çϵµ·Ï È®ÀåµË´Ï´Ù. ÀÌÁ¦, ÀÌ ÄÚµå´Â ´ÙÁß-ÄÄÆÄÀÏ·¯ ȯ°æ¿¡¼­´Â ½ÇÆÐÇÒ °ÍÀÔ´Ï´Ù. ±×·¯ÇÑ Äڵ带 ´ÙÀ½°ú °°ÀÌ ´ëüÇϼ¼¿ä:

        return Py_Build("");
SWIGÀÇ %typemap ¸í·É¾î¸¦ »ç¿ëÇÏ¿© ±× º¯°æÀ» ÀÚµ¿ÀûÀ¸·Î ÇÏ´Â °Íµµ °¡´ÉÇÒ °ÍÀÔ´Ï´Ù, ±×·¸Áö¸¸ Àú´Â ÀÌ°ÍÀ» ¾ÆÁ÷±îÁö ÀÛµ¿½ÃÅ°Áö ¸øÇÏ°í ÀÖ½À´Ï´Ù (Àú´Â ¿ÏÀüÈ÷ SWIG Ãʺ¸ÀÔ´Ï´Ù.)

6. ÆÄÀ̽ãÀÇ ½© ½ºÅ©¸³Æ®¸¦ »ç¿ëÇÏ¿© ÆÄÀ̽ã ÀÎÅÍÇÁ¸®Å͸¦ ¿©·¯ºÐÀÇ À©µµ¿ì ¾îÇà ¾È¿¡¼­ ¶ç¿ì´Â °ÍÀº ¹Ù¶÷Á÷ÇÑ »ý°¢ÀÌ ¾Æ´Õ´Ï´Ù; °á°ú·Î ³ª¿À´Â ±× âÀº ¿©·¯ºÐÀÇ ¾îÇÃÀÇ À©µµ¿ì ½Ã½ºÅÛ¿¡ µ¶¸³ÀûÀÌ µÉ °ÍÀÔ´Ï´Ù. ¿ÀÈ÷·Á, ¿©·¯ºÐÀº (ȤÀº wxPythonWindow Ŭ·¡½º)´Â "°íÀ¯ÀÇ" ÀÎÅÍÇÁ¸®ÅÍ À©µµ¿ì¸¦ »ý¼ºÇؾ߸¸ ÇÕ´Ï´Ù. ±× À©µµ¿ì¸¦ ¿ëÀÌÇÏ°Ô ÆÄÀ̽ã ÀÎÅÍÇÁ¸®ÅÍ¿¡ ¿¬°áÇÒ ¼ö ÀÖ½À´Ï´Ù. ÆÄÀ̽ãÀÇ i/o¸¦ ÀÐ°í ¾²±â¸¦ Áö¿øÇÏ´Â _¾î¶²_ °´Ã¼¿¡µµ ¹æÇâ ÀüȯÇÒ ¼ö ÀÖ½À´Ï´Ù, ±×·¯¹Ç·Î ¿©·¯ºÐÀÌ ÇÊ¿äÇÑ °ÍÀº (È®Àå ¸ðµâ¿¡ Á¤ÀǵÈ) Àб⠾²±â ¸Þ½îµå¸¦ ´ã°í ÀÖ´Â ÆÄÀ̽㠰´Ã¼ÀÔ´Ï´Ù.


¾ÕÀ¸·Î    ¸ñÂ÷    1    2    3    4    5    6    7    Á¦8Àå    ´ÙÀ½À¸·Î