MoinMoin   CLR via C# UserPreferences
 
Help Info Print View Search Diffs Edit
 À妽º   µµ¿ò¸»   Ã£±â   ´ë¹®   ºí·Î±×   ¹Ù²ï±Û 

CLR via C#
2009/03/31

Part1. CLRÀÇ ±âº» Áö½Ä

Chapter 1. °ø¿ë ¾ð¾î ·±Å¸ÀÓ(CLR)ÀÇ ½ÇÇà ¸ðµ¨

¼Ò½ºÄÚµå´Â °ü¸®µÇ´Â ¸ðµâ(managed module)ÀÇ ÇüÅ·Π¿Ï¼ºµÈ´Ù.
°ü¸®µÇ´Â ¸ðµâÀÇ ÆÄÀÏ Æ÷¸ËÀº Ç¥ÁØ 32/64ºñÆ® Microsoft Windows Portable Excutable(PE32/PE32+)ÀÇ ÇüÅÂÀ̸ç, ÀÌ´Â CLRÀÌ ½ÇÇà½Ãų ¼ö ÀÖ´Â ½ÇÇà ÆÄÀÏ Æ÷¸ËÀ̱⵵ ÇÏ´Ù.
¸ðµâÁß¿¡´Â ¼ø¼öÇÏ°Ô IL Äڵ常À» °¡Áö´Â ¸ðµâÀÌ ÀÖÀ» ¼ö Àִµ¥ ÀÌ °æ¿ì PE32 ȤÀº PE32+ Çì´õ Á¤º¸´Â ¹«½ÃµÈ´Ù.

°¢ ºÎºÐÀÇ ¸íĪ ¼³¸í
PE32, PE32+ Çì´õ Ç¥ÁØ Windows PE ÆÄÀÏ Çì´õÀ̸ç, À̰ÍÀº COFF ÇüÅÂ¿Í À¯»çÇÑ ±¸Á¶¸¦ °¡Áø´Ù. Çì´õ¿¡´Â ÆÄÀÏÀÇ ½ÇÇà ŸÀÔ(CUI, GUI, DLL)À» °¡Áö¸ç ºôµå ³¯Â¥°¡ Æ÷ÇÔÀÌ µÈ´Ù.
CLR Çì´õ °ü¸®µÇ´Â ¸ðµâÀÓÀ» Á¤ÀÇÇØ ÁÖ´Â Á¤º¸µéÀ» Æ÷ÇÔÇÑ´Ù. ½ÇÇà¿¡ ÇÊ¿äÇÑ CLR¹öÀü°ú ±âŸ ¼³Á¤°ª, ¾îÇø®ÄÉÀÌ¼Ç ÁøÀÔÁ¡(MainÇÔ¼ö)ÀÇ Á¤º¸ ¸ÞŸµ¥ÀÌÅÍÀÇ À§Ä¡¿Í Å©±â, ¸®¼Ò½º, °­·ÂÇÑ À̸§(strong name)Á¤º¸µîÀÌ ÀúÀåµÈ´Ù.
¸ÞŸµ¥ÀÌÅÍ ¸ðµç °ü¸®¸ðµâÀº ¸ÞŸµ¥ÀÌÅ͸¦ °¡Áö°í Àִµ¥ Å©°Ô µÎ Á¾·ùÀÇ Å×À̺íÀÌ ÀÖ´Ù. µÎ Å×ÀÌºí ¸ðµÎ°¡ ŸÀÔ¿¡ ´ëÇÑ ¸ñ·ÏÀ» ´ã°í ÀÖ´Ù. ´Ü, ÇÑ Á¾·ù´Â ¼Ò½ºÄڵ忡¼­ Á¤ÀÇÇÑ Å¸ÀÔÀÇ ¸ñ·ÏÀ̸ç, ´Ù¸¥ ÇÑ Á¾·ù´Â ¼Ò½ºÄڵ忡¼­ ÂüÁ¶Çؼ­ »ç¿ëµÈ ŸÀÔÀÇ ¸ñ·ÏÀÌ´Ù.
ILÄÚµå ¾ð¾î ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ¼­ ¼Ò½ºÄڵ尡 ÄÄÆÄÀÏµÈ °á°ú¹°ÀÌ´Ù.

CLRÀÇ ÀÛ¾÷´ë»óÀº ¸ðµâÀÌ ¾Æ´Ï°í ¹Ù·Î ¾î¼Àºí¸®ÀÌ´Ù. ¾î¼Àºí¸®¶õ Çϳª ÀÌ»óÀÇ ¸ðµâ ȤÀº ¸®¼Ò½º ÆÄÀÏ·Î ±¸¼ºµÈ ³í¸®ÀûÀÎ ÆÄÀÏÀÇ ±×·ìÀ» ÀǹÌÇÑ´Ù. µÑ° ¾î¼Àºí¸®´Â Àç»ç¿ë, º¸¾È, ¹öÀü°ü¸®ÀÇ ´ÜÀ§ÀÌ´Ù. °³¹ßÀÚ°¡ ¼±ÅÃÇÑ ÄÄÆÄÀÏ·¯³ª Åø¿¡ ÀÇÇØ¼­ »ç¿ëÀÚ´Â ÆÄÀÏ Çϳª·Î ±¸¼ºµÈ ¾î¼Àºí¸®¸¦ Á¦ÀÛÇÒ ¼öµµ ÀÖ°í ¿©·¯ ÆÄÀÏ·Î ±¸¼ºµÈ ¾î¼Àºí¸®¸¦ Á¦ÀÛÇÒ ¼öµµ ÀÖ´Ù. CLRÀÇ ¼¼°è¿¡¼­´Â ¾î¼Àºí¸®¸¦ ¿ì¸®°¡ ÈçÈ÷ ÄÄÆ÷³ÍÆ®¶ó°í ºÎ¸£±âµµ ÇÑ´Ù.

±âº»ÀûÀ¸·Î ÄÄÆÄÀÏ·¯´Â »ý¼ºµÈ °ü¸®¸ðµâÀ» ¾î¼Àºí¸®·Î º¯È¯ÇÏ´Â ÀÛ¾÷À» ÇÑ´Ù. Áï C# ÄÄÆÄÀÏ·¯°¡ ¸Å´ÏÆä½ºÆ® Á¤º¸°¡ Æ÷ÇÔµÈ ¸ðµâÀ» »ý¼ºÇÏ´Â °ÍÀÌ´Ù.

±×¸²

¾î¼Àºí¸®¸¦ ÀÌ¿ëÇØ Àç»ç¿ë, º¸¾È, ¹öÀü°ü¸® ´ë»óÀÇ ÄÄÆ÷³ÍÆ®ÀÇ ³í¸®Àû ±¸¼º°ú ¹°¸®Àû ±¸¼ºÀ» ÃÖ´ëÇÑ ºÐ¸®ÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù.

¾î¼Àºí¸® ¸ðµâÀº ÂüÁ¶µÈ ¾î¼Àºí¸®ÀÇ Á¤º¸µµ Æ÷ÇÔÇÑ´Ù. (¹öÀüÁ¤º¸¸¦ Æ÷ÇÔÇÏ¿©) ÀÌ Á¤º¸¸¦ ÀÌ¿ëÇÏ¿© ¾î¼Àºí¸®´Â ½º½º·Î-¼³¸íÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù. ´Þ¸® ¾ê±âÇϸé CLRÀº ¾î¼Àºí¸®¿¡ Æ÷ÇÔµÈ Äڵ带 ½ÇÇàÇϱâ À§ÇÑ ¾î¼Àºí¸®ÀÇ Á÷Á¢ÀûÀÎ Á¾¼Ó°ü°è¸¦ ¾Ë ¼ö ÀÖ´Ù´Â °ÍÀÌ´Ù. (·¹Áö½ºÆ®¸®³ª ¾×Ƽºê µð·ºÅ丮´Â ÇÊ¿äÇÏÁö ¾Ê´Ù.)

¼³Ä¡µÈ .NETÀÇ ¹öÀüÀº ´ÙÀ½ ·¹Áö½ºÆ®¸®¿¡¼­ È®ÀÎÇÒ ¼ö ÀÖ´Ù.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\policy
¶ÇÇÑ
CLRVer.exe À¯Æ¿¸®Æ¼·Îµµ ½ÇÇàÁßÀÎ ÇÁ·Î±×·¥¿¡ ´ëÇÑ CLR ¹öÀüÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù.

¸¸¾à ÇÁ·Î±×·¥À» Á¦ÀÛÇÒ¶§ ƯÁ¤¹öÀüÀÇ Windows ±â´ÉÀ» »ç¿ëÇÏ±æ ¿øÇÒ¶§°¡ ÀÖ´Ù. ÀÌ °æ¿ì °³¹ßÀÚ´Â °ü¸®µÇÁö ¾Ê´Â unsafe Äڵ带 »ç¿ëÇÏ¿© ƯÁ¤ CPU¿¡ ÀÇÁ¸ÀûÀÎ ±â´ÉÀ» Æ÷ÇÔÇÒ ¼ö ÀÖ´Ù.
ÀÌ·¯ÇÑ ±â´ÉÀ» Á¦°øÇϱâ À§ÇØ C# ÄÄÆÄÀÏ·¯´Â /platform ½ºÀ§Ä¡¿É¼ÇÀÌ Á¦°øµÈ´Ù.

»ý¼ºµÈ °ü¸® ¸ðµâÀÇ Çì´õ Á¤º¸¸¦ È®ÀÎÇÒ ¼ö ÀÖ°Ô ÇØÁÖ´Â DumpBin?.exe¿Í CorFlags?.exe µÎ °³ÀÇ ¸í·ÉÁÙ À¯Æ¿¸®Æ¼¸¦ Á¦°øÇØ ÁØ´Ù.

°ü¸®Äڵ尡 ºñ°ü¸® Äڵ庸´Ù ¼º´ÉÀÌ ¿ì¼öÇÒ ¼ö ÀÖ´Â ¸î°¡Áö ±Ù°Å
1. CLRÀº ¾îÇø®ÄÉÀ̼ÇÀÇ ½ÇÇàÆÐÅÏÀ» ÇÁ·ÎÆÄÀÏ ÇÒ ¼ö ÀÖÀ¸¸ç ÀÌ¿¡ µû¶ó¼­ ¾îÇø®ÄÉÀÌ¼Ç ½ÇÇàÁß¿¡ ILÄڵ带 ³×ÀÌÆ¼ºê ÄÚµå·Î ´Ù½Ã ÄÄÆÄÀÏÇÒ ¼ö ÀÖ´Ù.
2. ƯÁ¤»óȲÀÇ Å×½ºÆ® °ª ȤÀº ³í¸® ¿¬»êÀÇ °á°ú¸¦ ½ÇÇàÀü¿¡ ÀÌ¹Ì Á¤È®ÇÏ°Ô ¾Ë ¼ö ÀÖ´Ù. ±×¿¡ µû¶ó¼­ ¾îÇø®ÄÉÀ̼ÇÀÇ ½ÇÇàÄڵ带 Á» ´õ ºü¸¥ ³×ÀÌÆ¼ºê Äڵ带 »ý¼ºÇÏ°Ô µÈ´Ù.
3. º¸ÅëÀÇ ºñ°ü¸® ÄÚµå´Â ÃÖÀú»ç¾ç¿¡ ¸ÂÃç¼­ Ãâ½ÃµÈ´Ù. ¹Ý¸é JIT ÄÄÆÄÀÏ·¯´Â ½ÇÇàȯ°æ¿¡ ÃÖÀûÈ­µÈ ³×ÀÌÆ¼ºê Äڵ带 »ý¼ºÇÒ ¼ö ÀÖ´Ù.

IL»ç¿ëÀ¸·Î ¾ò´Â ÀåÁ¡À¸·Î CPU¸¦ Ãß»óÈ­ÇÔÀ¸·Î ½±°í ºü¸£°Ô ¾Ë¾Æº¼ ¼ö ÀÖÁö¸¸ °¡Àå Å« ÀåÁ¡Àº ¾ÈÀüÇÏ°Ô ½ÇÇàµÊÀ» CLRÀÌ º¸ÀåÇØ Áشٴ °ÍÀÌ´Ù.
ILÄڵ尡 ³×ÀÌÆ¼ºê ÄÚµå·Î º¯È¯µÉ¶§ CLRÀº °ËÁõÀÛ¾÷À¸·Î ºÒ¸®´Â ÀÏ·ÃÀÇ ÀÛ¾÷À» ¼öÇàÇÑ´Ù. ¸ðµç ¸Þ¼­µåÀÇ È£ÃâÄڵ带 ´ë»óÀ¸·Î ÀÎÀÚÀÇ Å¸ÀÔ°ú °³¼ö°¡ Á¤È®ÇÏ°í ¿Ã¹Ù¸¥Áö, ¹Ýȯ°ªÀº ÀûÀýÇÑ Å¸ÀÔÀ¸·Î »ç¿ëµÇ´ÂÁö ¸Þ¸ð¸® ħ¹üµîµµ °ËÃâÀÌ µÈ´Ù.
(°ü¸®µÇ´Â ¸ðµâÀÇ ¸ÞŸµ¥ÀÌÅͰ¡ Á¸ÀçÇϱ⠶§¹®¿¡ ÀÌ·± ÀÛ¾÷ÀÌ °¡´ÉÇÏ´Ù.)

Windows ÇÁ·Î¼¼½º Çϳª¸¦ »ý¼ºÇϰí À¯ÁöÇÏ´Â µ¥´Â ¸¹Àº ¿î¿µÃ¼Á¦ÀÇ ÀÚ¿øÀ» ÇÊ¿ä·Î ÇÑ´Ù.
µû¶ó¼­ ¸¹Àº ÇÁ·Î¼¼½º¸¦ »ý¼ºÇÑ´Ù´Â °ÍÀº CPU¿¡ ¸¹Àº ºÎ´ãÀ» ÁÖ´Â °Í°ú µ¿½Ã¿¡ ¿î¿µÃ¼Á¦¿¡ ÀÚ¿øºÎÁ·À» ¾ß±âÇÏ´Â ¿øÀÎÀÌ µÇ±âµµ ÇÑ´Ù.
½ÇÁ¦ CLRÀº ÇϳªÀÇ OSÇÁ·Î¼¼½º¿¡ ¿©·¯ °³ÀÇ °ü¸®µÇ´Â ¾îÇø®ÄÉÀ̼ÇÀ» ¾ÈÀüÇÏ°Ô ½ÇÇà½Ãų ¼ö ÀÖ´Ù. °¢°¢ °ü¸®µÇ´Â ¾îÇø®ÄÉÀ̼ÇÀº AppDomain?À̶ó°í ºÒ¸®¸ç, ±âº»ÀûÀ¸·Î ¸ðµç EXEÆÄÀϵéÀº ½ÇÇà ½Ã¿¡ ÇϳªÀÇ AppDomain?¸¸À» Æ÷ÇÔÇÑ °¡»ó ¸Þ¸ð¸® °ø°£À» È®º¸ÇÑ´Ù. ÇÏÁö¸¸ CLR ÇÁ·Î¼¼½º È£½ºÆÃÀ» ÅëÇÏ¿© ÇϳªÀÇ OSÇÁ·Î¼¼½º¿¡¼­ ´Ù¼öÀÇ AppDomain?À» ½ÇÇàÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù. ÀÌ¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº 21Àå

JIT ÄÄÆÄÀÏ·¯´Â ¾ÈÀüÇÏÁö ¾ÊÀº ¸Þ¼­µå¸¦ ÄÄÆÄÀÏÇÒ ¶§ ¸Þ¼­µå¸¦ Æ÷ÇÔÇÑ ¾î¼Àºí¸®°¡ System.Security.Permissions.SecurityPermission? ±ÇÇÑÀ» ºÎ¿© ¹Þ¾Ò´ÂÁö ±×¸®°í ÀÌ ±ÇÇÑ °´Ã¼ÀÇ System.Security.Permissions.SecurityPermissionFlag?Ç÷¡±× °ªÀÌ SkipVerification?À¸·Î ¼³Á¤µÇ¾ú´ÂÁö È®ÀÎÇÑ´Ù. ±×¸®°í ÀÌ Ç÷¡±×°¡ ¼³Á¤µÈ ±ÇÇÑÀ» °¡Áö°í ÀÖ´Ù¸é JIT ÄÄÆÄÀÏ·¯´Â ¾ÈÀüÇÏÁö ¾ÊÀº Äڵ带 ÄÄÆÄÀÏÇÑ ÈÄ ½ÇÇàÇÒ °ÍÀÌ´Ù. ¸¸¾à Ç÷¡±×°¡ ¼³Á¤µÇÁö ¾Ê¾Ò´Ù¸é System.InvalidProgramException?À̳ª System.Security.VerificationException?À» ¹ß»ýÇÔÀ¸·Î½á ÇØ´ç ÄÚµåÀÇ ¼öÇàÀ» Áß´ÜÇÑ´Ù.

PEVerify.exeÀ¯Æ¿¸®Æ¼´Â ¾ÈÀüÇÏÁö ¾ÊÀº Äڵ带 Æ÷ÇÔÇÑ ¸Þ¼­µå°¡ ¾î¼Àºí¸®¿¡ Á¤ÀǵǾî ÀÖ´ÂÁö ¸ðµç ¸Þ¼­µå¸¦ °Ë»öÇØ ÁÖ´Â ÀÛ¾÷À» ÇÑ´Ù. °ËÁõÀÛ¾÷Àº ¸ðµç Á¾¼Ó ¾î¼Àºí¸®ÀÇ ¸ÞŸµ¥ÀÌÅ͵µ °Ë»çÇϹǷΠÂüÁ¶µÈ ¾î¼Àºí¸®µµ ·Îµå °¡´ÉÇÑ À§Ä¡¿¡ ÀÖ¾î¾ß ÇÑ´Ù.

ILÀº ¼Ò½ºÄڵ带 º¸È£ÇÒ ÃæºÐÇÑ ¾Ë°í¸®ÁòÀ» Á¦°øÇÏÁö ¾Ê´Â´Ù.
ÇâÈÄ DRM(DIgital Rights Management)¼Ö·ç¼ÇÀ» °³¹ßÀÚ¿¡°Ô Á¦°øÇÏ¿© ¾î¼Àºí¸®¿¡ Æ÷ÇÔµÈ ILÄڵ带 º¸È£ÇÒ ¼ö ÀÖ´Â ±â´ÉÀ» Á¦°øÇÏ°Ô µÉ °ÍÀÌ´Ù.

NGen.exeÀº ³×ÀÌÆ¼ºê Äڵ带 »ý»êÇØÁØ´Ù.
¿øÇÏ´Â ¼º´ÉÇâ»óÀ» À§Çؼ­´Â ³Ê¹« ¸¹Àº Á¦¾àÁ¶°ÇÀÌ µû¸¥´Ù.

FCL : Framework Class Library
³×ÀÓ½ºÆäÀ̽º ³×ÀÓ½ºÆäÀ̽º¿¡ Æ÷ÇÔµÈ Å¸ÀÔ
System ¸ðµç Á¾·ùÀÇ ¾îÇø®ÄÉÀ̼ǿ¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Â ¿©·¯ ±âº» ŸÀÔ
System.Data µ¥ÀÌÅͺ£À̽º¿Í ÇÁ·Î¼¼½Ì µ¥ÀÌÅÍÀÇ Åë½ÅÀ» À§ÇÑ Å¸ÀÔ
System.Drawing 2D ±×·¡ÇÈÀ» ´Ù·ç±â À§ÇÑ Å¸ÀÔ. À©Æû, À¥Æû¿¡¼­ º¸Åë »ç¿ë
System.IO I/O½ºÆ®¸²°ú µð·ºÅ͸®, ±×¸®°í ÆÄÀÏ ÀÛ¾÷¿¡ »ç¿ëµÇ´Â ŸÀÔ
System.Net ÇÏÀ§¼öÁØÀÇ ³×Æ®¿öÅ© Åë½Å°ú ÀϺΠ°øÅë ÀÎÅÍ³Ý ÇÁ·ÎÅäÄÝ ÀÛ¾÷À» À§ÇÑ Å¸ÀÔ
System.Runtime.InteropServices? °ü¸®Äڵ尡 OSÀÇ °ü¸®µÇÁö ¾ÊÀº ±â´É, ¿¹¸¦ µé¾î COM, Win32ÇÔ¼ö, »ç¿ëÀÚDLLµîÀÇ ±â´ÉÀ» ¾×¼¼½º °¡´ÉÇÏ°Ô ÇØÁִ ŸÀÔ
System.Security µ¥ÀÌÅÍ¿Í ¸®¼Ò½º¸¦ º¸È£Çϱâ À§ÇÑ Å¸ÀÔ
System.Text ´Ù¾çÇÑ ÀÎÄÚµù¿¡¼­ ÅØ½ºÆ®¸¦ Áö¿ø (¾Æ½ºÅ°, À¯´ÏÄÚµå µî)
System.Threading ºñµ¿±â ÀÛ¾÷À» Áö¿øÇϱâ À§ÇÑ Å¸ÀÔ
System.Xml XML½ºÅ°¸¶¿Í µ¥ÀÌÅ͸¦ ó¸®Çϱâ À§ÇÑ Å¸ÀÔ

CTS : Common Type System
Çʵå, ¸Þ¼­µå, ¼Ó¼º, À̺¥Æ®
ÇÑÁ¤ÀÚ(Private, Family, Assembly, Public, Family or assembly, Family and assembly)
¸ðµç ŸÀÔÀº ÀÌ¹Ì Á¤ÀǵǾî ÀÖ´Â System.Object¸¦ ¹«Á¶°Ç »ó¼Ó ¹Þ´Â´Ù.
System.ObjectŸÀÔÀº ´ÙÀ½°ú °°Àº ±â´ÉÀ» Á¦°øÇÑ´Ù.

CLS : Common Language Specification
¾ð¾î¸¶´Ù »ç¿ëÇϴ ŸÀÔÀÇ Á¾·ù°¡ ´Ù¸¦ ¼ö ÀÖÀ¸¹Ç·Î ÃÖ¼ÒÇÑÀ¸·Î µ¿ÀϼºÀ» À¯ÁöÇØ¾ß ÇÏ´Â ½ºÆå
using System; 
 
// ÄÄÆÄÀÏ·¯¿¡°Ô CLS ȣȯ¼º È®ÀÎÀ» ¿ä±¸ÇÑ´Ù. 
[assembly : CLSCompliant(true)] 
 
namespace SomeLibrary 
{ 
 public sealed class someLibraryType // °æ°í : Ŭ·¡½º°¡ publicÀ̹ǷΠ
 { 
  public UInt32 Abc { return 0; } // °æ°í : ¹ÝȯÇü½Ä UInt32´Â CLS±Ô°ÝÀÌ ¾Æ´Ô 
  public void abc() {} // °æ°í : ´ë¼Ò¹®ÀÚ¸¸ ´Ù¸¥ ÇÔ¼ö¸íÀº CLS±Ô°ÝÀÌ ¾Æ´Ô 
  private UInt32 ABC() { return 0; } // ¿¡·¯ ¾øÀ½ 
 } 
} 

CLR¿¡¼­´Â ŸÀÔÀÇ ¸ðµç ¸â¹ö°¡ ÇʵåÀ̰ųª ¸Þ¼­µå ÀÌ´Ù. ÇÏÁö¸¸ ¾ð¾îÂ÷¿ø¿¡¼­ ¿­°ÅÇü, ¹è¿­, ¼Ó¼º, Àε¦¼­, µ¨¸®°ÔÀÌÆ®, À̺¥Æ®, »ý¼ºÀÚ, ¼Ò¸êÀÚ, ¿¬»êÀÚ ¿À¹ö·Îµå, Çü º¯È¯ ¿¬»êÀÚµîÀ» Á¦°øÇØÁÖ´Â °ÍÀÌ´Ù.

using System; 
 
internal sealed class Test 
{ 
 // »ý¼ºÀÚ 
 public Test() {} 
 
 // ¼Ò¸êÀÚ 
 ~Test() {} 
 
 // ¿¬»êÀÚ ¿À¹ö·Îµå 
 public static Boolean operator == (Test t1, Test t2) { return true; } 
 public static Boolean operator != (Test t1, Test t2) { return false; } 
 
 public static Test operator + (Test t1, Test t2) { return null; } 
 
 // ¼Ó¼º 
 public String AProperty 
 { 
  get { return null; } 
  set {} 
 } 
   
 // Àε¦¼­ 
 public String this [Int32 x] 
 { 
  get { return null; } 
  set {} 
 } 
 
 // À̺¥Æ® 
 event EventHandler AnEvent;   
} 
¿ª¾î¼ÀÇØ¼­ È®ÀÎÇϱâ
À̺¥Æ®, ¼Ó¼º, Àε¦¼­, ¿¬»êÀÚ ¿À¹ö·Îµù, »ý¼ºÀÚ, ¼Ò¸êÀÚ´Â ÀüºÎ ¾ð¾î¿¡¼­ Áö¿øÇØÁÖ´Â ±â´É

ºñ°ü¸®ÄÚµå¿ÍÀÇ »óÈ£¿¬µ¿ °¡´ÉÇÑ ºÎºÐÀÌ ÀÖ´Ù.
1. °ü¸®Äڵ忡¼­ DLL¿¡ Æ÷ÇÔµÈ °ü¸®µÇÁö ¾ÊÀº ÇÔ¼ö È£Ãâ : P/Invoke¸¦ ÀÌ¿ëÇØ¼­ ½±°Ô È£Ãâ °¡´É
2. °ü¸®Äڵ忡¼­ COM ÄÄÆ÷³ÍÆ®(¼­¹ö)ÀÇ »ç¿ë : ŸÀÔ ¶óÀ̺귯¸®¸¦ ÅëÇØ ¾î¼Àºí¸®ÀÇ ÀÚµ¿ »ý¼º °¡´É
3. ºñ°ü¸®Äڵ忡¼­ °ü¸®µÇ´Â ŸÀÔ »ç¿ë(¼­¹ö) : °á·ÐÀº COM ÄÄÆ÷³ÍÆ® À¯»çÇüÅ·Π¸¸µé¾î³½´Ù´Â °Çµ¥ ÀÚ¼¼ÇÑ °ÍÀº TlbExp?.exe, RegAsm?.exe ÅøÀ» Âü°í
4. C++Äڵ带 ILÄÚµå·Î »ý¼º(Á¦¾àÀÌ ÀÖÀ½, ÀζóÀξî¼À, °¡º¯ÀÎÀÚ, setjump, __disable, _AddressOfReturnAddress?, _ReturnAddress?, __enable °ú °°Àº ·çƾÀÌ »ç¿ëµÈ´Ù¸é ILÄڵ带 »ý¼ºÇÒ ¼ö ¾ø´Ù.)

Chapter 2. ºôµå, ÆÐŰÁö, ¹èÆ÷ ±×¸®°í ¾îÇø®ÄÉÀ̼ǰú ŸÀÔ °ü¸®

¾î¼Àºí¸®´Â ŸÀÔÀ̳ª ¸®¼Ò½º¸¦ Æ÷ÇÔÇÑ Çϳª ÀÌ»óÀÇ ÆÄÀϵéÀÌ ¸ðÀÎ ÆÄÀÏÀÇ Ä÷º¼ÇÀÌ´Ù.

Chapter 3. °øÀ¯ ¾î¼Àºí¸®¿Í °­·ÂÇÑ À̸§ÀÇ ¾î¼Àºí¸®

Part 2. ŸÀÔ(Type)

Chapter 4. ŸÀÔÀÇ ±âº»


PythonPowered EditText of this page (last modified 2009-04-01 19:33:36)
FindPage by browsing, searching, or an index
Or try one of these actions: DeletePage, DeleteUploadedFile, LikePages, SpellCheck, UploadFile