MFCÀÇ DLL ¹öÀüÀ» TN033:

ÀÌ ³ëÆ® Mfcxx.dllÀ» »ç¿ë ÇÏ ¿© ¹æ¹ý°ú MFCxxD.DLL (¿©±â¼­ x´Â MFC ¹öÀü ¹øÈ£) °øÀ¯ µ¿Àû ¿¬°á ¶óÀ̺귯¸® MFC ÀÀ¿ë ÇÁ·Î±×·¥ ¹× È®Àå Dll¿¡ ¼³¸í ÇÕ´Ï´Ù. ÀÏ¹Ý Dll¿¡ ´ë ÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº ´ÙÀ½ À¥ »çÀÌÆ®¸¦ ÂüÁ¶ ÇϽʽÿÀ »ç¿ë ÇÏ ¿© MFC DLLÀÇ ÀÏȯÀ¸·Î¡£

ÀÌ ±â¼ú ³ëÆ® DllÀÇ ¼¼ °¡Áö Ãø¸éÀ» ´Ù·ì´Ï´Ù. ¸¶Áö¸· µÎ °³ÀÇ ´õ ¸¹Àº °í±Þ »ç¿ëÀÚ¸¦ À§ÇÑ:

(ÀÌ Á¤±Ô DLL ¶ó°í) ºñ MFC ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Â MFC¸¦ »ç¿ë ÇÏ ¿© DLLÀ» ÀÛ¼º ÇÏ´Â µ¥ °ü½ÉÀÌ ÀÖ´Ù¸é, ±â¼ú Âü°í 11 ÂüÁ¶ ÇϽʽÿÀ¡£

MFCxx.DLL Áö¿øÀÇ °³¿ä: ¿ë¾î ¹× ÆÄÀÏ

Á¤±Ô DLL: ÀÏ¹Ý DLLÀ» »ç¿ë ÇÏ ¿© MFC Ŭ·¡½º Áß ÀϺθ¦ »ç¿ë ÇÏ ¿© µ¶¸³ ½ÇÇàÇü DLL ºôµå. ¾ÖÇà ¸® ÄÉÀÌ ¼Ç/DLL °æ°è ÀÎÅÍÆäÀ̽º´Â "C" ÀÎÅÍÆäÀ̽º¿Í Ŭ¶óÀÌ¾ðÆ® ÀÀ¿ë ÇÁ·Î±×·¥À» MFC ÀÀ¿ë ÇÁ·Î±×·¥ Çʿ䰡 ¾ø½À´Ï´Ù.

ÀÌ MFC 1.0¿¡¼­ Áö¿ø DLL Áö¿øÀÇ ¹öÀüÀÔ´Ï´Ù. ±â¼ú Âü°í 11 ¹× MFC °í±Þ °³³ä »ùÇÿ¡¼­ ¼³¸í ÇÏ´Â DLLTRACE¡£

¸Þ¸ðnbsp;??Visual c + +ÀÇ ¹öÀü 4.0, ¿ë¾î USRDLL ¿À·¡ À̸ç Á¤ÀûÀ¸·Î MFC¿¡ ¸µÅ© ÇÏ´Â ±âº» DLL¿¡ ÀÇÇØ ´ëü µÇ¾ú½À´Ï´Ù. ¶ÇÇÑ µ¿ÀûÀ¸·Î MFC¿¡ ¸µÅ© ÇÏ´Â ±âº» DLLÀ» ±¸ÃàÇÒ ¼ö ÀÖ½À´Ï´Ù(&N).

MFC 3.0 (±×¸®°í À§ÀÇ) ÀÏ¹Ý Dll OLE ¹× µ¥ÀÌÅͺ£À̽º Ŭ·¡½º¸¦ ºñ·Ô ÇÑ ¸ðµç »õ·Î¿î ±â´É Áö¿ø¡£

AFXDLL: À̰ÍÀº ¶ÇÇÑ ¶ó°íµµ MFC ¶óÀ̺귯¸®ÀÇ °øÀ¯ ¹öÀü. À̰ÍÀº MFC 2.0¿¡ Ãß°¡ µÈ »õ DLL Áö¿ø ÀÌ´Ù. MFC ¶óÀ̺귯¸® ÀÚü´Â ´Ù¾ç ÇÑ Dll (¾Æ·¡ ¼³¸í ÂüÁ¶) ¹× Ŭ¶óÀÌ¾ðÆ® ÀÀ¿ë ÇÁ·Î±×·¥ ¶Ç´Â DLL ÇÊ¿äÇÑ DllÀ» µ¿ÀûÀ¸·Î ¸µÅ© ÇÕ´Ï´Ù. ÀÀ¿ë ÇÁ·Î±×·¥/DLL °æ°è ÀÎÅÍÆäÀ̽º´Â C + + MFC Ŭ·¡½º ÀÎÅÍÆäÀ̽º. Ŭ¶óÀÌ¾ðÆ® ÀÀ¿ë ÇÁ·Î±×·¥¿¡´Â MFC ÀÀ¿ë ÇÁ·Î±×·¥ À̾î¾ß ÇÕ´Ï´Ù. ¸ðµç MFC 3.0 ±â´É Áö¿ø (¿¹¿Ü: À¯´ÏÄÚµå µ¥ÀÌÅͺ£À̽º Ŭ·¡½º¿¡ ´ëÇØ Áö¿ø µÇÁö ¾Ê½À´Ï´Ù)¡£

¸Þ¸ðnbsp;??Visual c + + ¹öÀü 4.0ÀÇÀÌ À¯ÇüÀÇ DLL ¶ó°í "È®Àå DLL."(&N)

ÀÌ ³ëÆ® MFCxx.DLL »ç¿ë ÇÏ ¿© MFC DLL ÁýÇÕÀ» Æ÷ÇÔ ÇÏ´Â Àüü ÂüÁ¶:

¸Þ¸ðnbsp;??MFCSxx [U] [D]ÀÔ´Ï´Ù.LIB ¶óÀ̺귯¸®¿¡¼­ »ç¿ë ÇÏ´Â °øÀ¯ Dll¿¡¼­ MFC¿Í ÇÔ²². ÀÌ·¯ÇÑ ¶óÀ̺귯¸® ÀÀ¿ë ÇÁ·Î±×·¥ ¶Ç´Â DLL¿¡ Á¤ÀûÀ¸·Î ¿¬°á ÇØ¾ß ÇÏ´Â Äڵ带 Æ÷ÇÔ(&N)¡£

ÇØ´ç °¡Á®¿À±â ¶óÀ̺귯¸®¸¦ ÀÀ¿ë ÇÁ·Î±×·¥ ¸µÅ©:

"MFC È®Àå DLL" Mfcxx.dllÀ» ±â¹ÝÀ¸·Î ÇÏ´Â DLL (¶Ç´Â ´Ù¸¥ MFC °øÀ¯ Dll). ¿©±â MFC ±¸¼º ¿ä¼Ò ¾ÆÅ°ÅØÃ³¿¡¼­ ¹ß Â÷±â. MFC Ŭ·¡½º¿¡¼­ ÆÄ»ý ÇÏ´Â À¯¿ëÇÑ Å¬·¡½º ¶Ç´Â ´Ù¸¥ MFC °°Àº µµ±¸ ŰƮ¸¦ ±¸Ãà ÇÏ´Â °æ¿ì DLL¿¡ ¹èÄ¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±Ã±ØÀûÀΠŬ¶óÀÌ¾ðÆ® ÀÀ¿ë ÇÁ·Î±×·¥Àº DLL·Î Mfcxx.dllÀ» »ç¿ë ÇÑ´Ù. ÀÌ·¸°Ô Çϸé Àç»ç¿ë °¡´ÉÇÑ ¸®ÇÁ Ŭ·¡½º, Àç»ç¿ë °¡´ÉÇÑ ±âº» Ŭ·¡½º¿Í ¹®¼­ º¸±â/Àç»ç¿ë °¡´ÉÇÑ Å¬·¡½º¡£

¸Þ¸ðnbsp;??±×°ÍÀº ÀÀ¿ë ÇÁ·Î±×·¥ MFC/OLE, µ¥ÀÌÅͺ£À̽º ¶Ç´Â ³×Æ®¿öÅ· Ŭ·¡½º¸¦ °¢°¢ »ç¿ë ÇÏÁö ¾Ê´Â °æ¿ì MFCOxx [U] D, D [U] MFCDxx, ¶Ç´Â MFCNxx [U] D µð¹ö±× ¶óÀ̺귯¸®¿Í ¸µÅ© ÇÏ´Â µ¥ ÇÊ¿äÇÑ(&N)¡£

ÀåÁ¡ ¹× ´ÜÁ¡

¿Ö MFCÀÇ °øÀ¯ ¹öÀüÀ» »ç¿ë ÇØ¾ß?

¿Ö ÇÏÁö »ç¿ë ÇØ¾ß MFCÀÇ °øÀ¯ ¹öÀü:

MFC È®Àå DLLÀ» ÀÛ¼º ÇÏ´Â ¹æ¹ý

MFC È®Àå DLL MFC Ŭ·¡½ºÀÇ ±â´ÉÀ» ³½ ÀÛ¼º ÇÔ¼ö¿Í Ŭ·¡½º¸¦ Æ÷ÇÔ ÇÏ´Â DLLÀÔ´Ï´Ù. OLE ¹× µ¥ÀÌÅͺ£À̽º µð¹ö±× Áö¿ø (MFCOxxD.DLL, MFCDxxD.DLL) DllÀº MFC È®Àå DllÀÇ ¿¹ Mfcxxd.dllÀ» »ç¿ë. MFC È®Àå DLL °øÀ¯ MFC DllÀ» »ç¿ë ÇÏ ¿© ÀÀ¿ë ÇÁ·Î±×·¥ ¸î °¡Áö Ãß°¡ °í·Á »çÇ×À¸·Î ±×°ÍÀ» »ç¿ë ÇÏ ¿© °°Àº ¹æ½ÄÀ¸·Î:

ÀÌ·¯ÇÑ °í·Á »çÇ×Àº ¾Æ·¡ ´õ ÀÚ¼¼ÇϰԿ¡¼­ ¼³¸í µÇ¾î ÀÖ½À´Ï´Ù. ¶ÇÇÑ MFC °í±Þ °³³ä »ùÇÃÀ» ÂüÁ¶ ÇØ¾ß DLLHUSK º¸¿©ÁÝ´Ï´Ù ÀÌÈÄ

Ŭ¶óÀÌ¾ðÆ® ÀÀ¿ë ÇÁ·Î±×·¥ ¹× È®Àå Dll Mfcxx.dllÀÇ µ¿ÀÏÇÑ ¹öÀüÀ» »ç¿ë ÇØ¾ß ÇÕ´Ï´Ù. MFC DLL ±ÔÄ¢À» µû¸£°í ¸ðµÎ µð¹ö±×¸¦ Á¦°ø ÇØ¾ß ÇÏ °í ¼Ò¸Å (/ ¸±¸®½º) È®Àå DLLÀÇ ¹öÀü. ÀÌ·¸°Ô Çϸé ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ µð¹ö±× ¹öÀü°ú ÀÏ¹Ý Á¤Ç° ¹öÀüÀ» ±¸Ãà ÇÏ °í ÀûÀý ÇÑ µð¹ö±× ¶Ç´Â ÀÏ¹Ý Á¤Ç° ¹öÀüÀÇ ¸ðµç Dll ¿¬°áÀ» Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥¡£

¸Þ¸ðnbsp;??C + + À̸§ ¸Í±Û¸µ ¹× ³»º¸³»±â ¹®Á¦¸¦ ÀÎÇØ È®Àå DLL¿¡¼­¿¡¼­ ³»º¸³»±â ¸ñ·Ï ´Ù¸¥ Ç÷§Æû¿¡ ´ë ÇÑ Dll°ú °°Àº DLLÀÇ µð¹ö±× ¹öÀü°ú ÀÏ¹Ý Á¤Ç° ¹öÀü °£¿¡ ´Ù¸¦ ¼ö ÀÖ½À´Ï´Ù. ¼Ò¸Å Mfcxx.dll¿¡ ¾à 2000 ³»º¸³½ Ç׸ñ Æ÷ÀÎÆ®; µð¹ö±× Mfcxxd.dll°¡ ¾à 3000 ³»º¸³½ ÁøÀÔÁ¡(&N)¡£

¸Þ¸ð¸® °ü¸®¿¡ ´ë ÇÑ ºü¸¥ Âü°í

¸Þ¸ð¸® °ü¸® ","ÀÌ ±â¼ú ³ëÆ®ÀÇ ³¡ ±Ùó ¼½¼Ç MFCÀÇ °øÀ¯ ¹öÀü Mfcxx.dllÀÇ ±¸ÇöÀ» ¼³¸í ÇÕ´Ï´Ù. ´ÜÁö È®Àå DLLÀ» ±¸Çö ÇÏ´Â °ÍÀ» ¾Ë°í ÇÏ´Â µ¥ ÇÊ¿äÇÑ Á¤º¸´Â ¿©±â¿¡¼­ ¼³¸í¡£

MFCxx.DLL ¹× Ŭ¶óÀÌ¾ðÆ® ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ÁÖ¼Ò °ø°£¿¡ ·Îµå ÇÏ´Â ¸ðµç È®Àå Dll °°Àº ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­ ¸¶Ä¡ µ¿ÀÏÇÑ ¸Þ¸ð¸® ÇÒ´çÀÚ, ¸®¼Ò½º ·Îµù ¹× ±âŸ MFC "Àü¿ª" »óÅ »ç¿ë µË´Ï´Ù. ºñ MFC DLL ¶óÀ̺귯¸®¿Í Á¤ÀûÀ¸·Î MFC¿¡ ¸µÅ© ÇÏ´Â ±âº» Dll Á¤È®È÷ ¹Ý´ë ÇÏ °í ÀÖ´Ù °¢ DLL ÀÚü ¸Þ¸ð¸® Ç®ÀÇ ÇÒ´ç Çϱ⠶§¹®¿¡ À̰ÍÀº Áß¿ä ÇÑ¡£

È®Àå DLLÀÌ ¸Þ¸ð¸®¸¦ ÇÒ´ç ÇÏ´Â °æ¿ì ¸Þ¸ð¸®¸¦ ´Ù¸¥ ÀÀ¿ë ÇÁ·Î±×·¥¿¡ ÇÒ´ç µÈ °³Ã¼¿Í ÇÔ²² È¥ÇÕÇÒ ÀÚÀ¯·Ó°Ô ¼ö ÀÖ½À´Ï´Ù. ¶ÇÇÑ, °øÀ¯ MFC ¶óÀ̺귯¸®¸¦ »ç¿ë ÇÏ´Â ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ Ãæµ¹ ÇÏ´Â °æ¿ì ¿î¿µ üÁ¦ÀÇ º¸È£ °øÀ¯ DLL ´Ù¸¥ MFC ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ¹«°á¼º À¯Áö µË´Ï´Ù.

´Ù¸¥ "Àü¿ª" MFC »óÅ¿¡¼­ ¸®¼Ò½º ·Îµå¸¦ ÇöÀç ½ÇÇà ÆÄÀÏ Ã³·³ Ŭ¶óÀÌ¾ðÆ® ÀÀ¿ë ÇÁ·Î±×·¥ ¹× ¸ðµç MFC È®Àå Dll·Î ÀÚü MFCxx.DLL °£¿¡ °øÀ¯ µÇ´Â ¸¶Âù°¡Áö·Î¡£

È®Àå DLLÀ» ±¸Ãà

Appwizard¸¦ »ç¿ë ÇÏ ¿© MFC È®Àå DLL ÇÁ·ÎÁ§Æ®¸¦ ¸¸µé ¼ö ÀÖ½À´Ï´Ù ±×¸®°í ±×°ÍÀº ÀÚµ¿À¸·Î ÀûÀý ÇÑ ÄÄÆÄÀÏ·¯¿Í ¸µÄ¿ ¼³Á¤À» »ý¼º µË´Ï´Ù. ±×°ÍÀº ¶ÇÇÑ ¼öÁ¤ÇÒ ¼ö ÇÏ´Â DllMain ÇÔ¼ö¸¦ »ý¼º Çß´Ù¡£

MFC È®Àå DLL¿¡ ±âÁ¸ ÇÁ·ÎÁ§Æ®¸¦ º¯È¯ ÇÏ´Â °æ¿ì MFCÀÇ °øÀ¯ ¹öÀüÀ» »ç¿ë ÇÏ ¿© ÀÀ¿ë ÇÁ·Î±×·¥À» ±¸Ãà Çϱâ À§ÇÑ Ç¥ÁØ ±ÔÄ¢ ½ÃÀÛ ÈÄ ´ÙÀ½ ½ÇÇà:

Çì´õ ÆÄÀÏ º¯°æ

È®Àå DLL ¸ñÀûÀº ÀϹÝÀûÀ¸·Î ÇØ´ç ±â´ÉÀ» »ç¿ëÇÒ ¼ö ÀÖ´Â Çϳª ÀÌ»óÀÇ ÀÀ¿ë ÇÁ·Î±×·¥¿¡ ¸î °¡Áö ÀϹÝÀûÀÎ ±â´ÉÀ» ³»º¸³¾ÀÔ´Ï´Ù. ÀÌ Å¬·¡½º ¹× Ŭ¶óÀÌ¾ðÆ® ÀÀ¿ë ÇÁ·Î±×·¥¿¡ »ç¿ëÇÒ ¼ö ÀÖ´Â Àü¿ª ÇÔ¼ö ³»º¸³»±â ±Í°á¡£

ÀÌ·¸°Ô ÇÏ·Á¸é °¢ ¸â¹ö ÇÔ¼ö °¡Á®¿À±â ¶Ç´Â ³»º¸³»±â ÀûÀý ÇÑ °Í ó·³ Ç¥½Ã µË´Ï´Ù ÀÖ´ÂÁö È®ÀÎ ÇØ¾ß ÇÕ´Ï´Ù. ÀÌ Æ¯º° ÇÑ ¼±¾ðÀÌ ÇÊ¿ä: __declspec (dllexport) ¹× __declspec(dllimport). Ŭ·¡½º¸¦ Ŭ¶óÀÌ¾ðÆ® ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­ »ç¿ë ÇÏ´Â °æ¿ì __declspec(dllimport)À¸·Î ¼±¾ðÇÒ ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù. È®Àå DLL ÀÚü¸¦ ºôµåÇÒ ¶§ __declspec (dllexport)·Î ¼±¾ð ÇØ¾ß ÇÕ´Ï´Ù. ¶ÇÇÑ, ±â´É ÇØ¾ß ÇÕ´Ï´Ù ½ÇÁ¦·Î ³»º¸³¾ Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥ ·Îµå ½Ã ±×µé¿¡ ¹ÙÀεùÇÒ ¼ö ÀÖµµ·Ï¡£

Àüü Ŭ·¡½º¸¦ ³»º¸³»´Â AFX_EXT_CLASS ¸¦ »ç¿ë ÇÏ ¿© Ŭ·¡½º Á¤ÀÇ¿¡. ÀÌ ¸ÅÅ©·Î __declspec (dllexport) À¸·Î _AFXDLL ¹× _AFXEXT ¸¦ Á¤ÀÇ ÇÏÁö¸¸ _AFXEXT °¡ Á¤ÀÇ µÇÁö ¾ÊÀº °æ¿ì __declspec(dllimport) ·Î Á¤ÀÇ ÇÏ´Â °æ¿ì ÇÁ·¹ÀÓ ¿öÅ©¿¡ ÀÇÇØ Á¤ÀÇ µË´Ï´Ù. _AFXEXT À§¿¡¼­ ¼³¸íÇÑ ´ë·Î Á¤ÀÇ È®Àå DLLÀ» ºôµåÇÒ ¶§. ¿¹¸¦ µé¾î:

aFX_EXT_CLASS CExampleExport Ŭ·¡½º: °ø¿ë CObject
{... Ŭ·¡½º Á¤ÀÇ...}

¾Æ´Ï¶ó Àüü Ŭ·¡½º¸¦ ³»º¸³»´Â

¹æ±Ý °³º° ÇÊ¿äÇÑ Å¬·¡½ºÀÇ ¸â¹ö¸¦ ±ÍÇÏÀÇ ¼öÃâÀ» ÇÏ´Â °æ¿ìµµ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, CDialog¸¦ ³»º¸³»´Â-ÆÄ»ý Ŭ·¡½º¸¦¸¸ »ý¼ºÀÚ¿Í DoModal È£Ãâ ³»º¸³»¾ß ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ÀÌ·¯ÇÑ ¸â¹ö´Â DLLÀ» »ç¿ë ÇÏ ¿© ³»º¸³¾ ¼ö ÀÖ½À´Ï´Ù.DEF ÆÄÀÏÀ» ÇÏÁö¸¸ ´ç½ÅÀº ¶ÇÇÑ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù AFX_EXT_CLASS ¸¹ÀÌ ³»º¸³»¾ß ÇÒ °³º° ±¸¼º¿ø¿¡ ´ëÇØ µ¿ÀÏÇÑ ¹æ½ÄÀ¸·Î¡£

¿¹¸¦ µé¾î:

 cExampleDialog Ŭ·¡½º: public CDialog
{
°ø°³:
 nbsp; AFX_EXT_CLASS CExampleDialog();
 ? AFX_EXT_CLASS int DoModal();
 ? / / Ŭ·¡½º Á¤ÀÇÀÇ ³ª¸ÓÁö
 ? .
 ? .
 ? .
}(&N)

ÀÌ·¸°Ô Çϸé Ŭ·¡½ºÀÇ ¸ðµç ¸â¹ö¸¦ ´õ ÀÌ»ó ³»º¸³»·Á´Â ÀÖ´Ù´Â »ç½Ç ¶§¹®À¸·Î Ãß°¡ ¹®Á¦¸¦ ½ÇÇàÇÒ ¼ö ¾ø½À´Ï´Ù. ¹®Á¦´Â MFC ¸ÅÅ©·Î ÀÛµ¿ ¹æ½Ä¿¡¼­ ÀÌ´Ù. ´Ù¾ç ÇÑ MFCÀÇ µµ¿ì¹Ì ¸ÅÅ©·Î ½ÇÁ¦·Î ¼±¾ð Çϰųª µ¥ÀÌÅÍ ¸â¹ö¸¦ Á¤ÀÇ ÇÕ´Ï´Ù. µû¶ó¼­ ÀÌ·¯ÇÑ µ¥ÀÌÅÍ ¸â¹ö¸¦ DLL¿¡¼­ ³»º¸³¾ ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù.

¿¹¸¦ µé¾î, DECLARE_DYNAMIC ¸ÅÅ©·Î°¡ Á¤ÀÇ µË´Ï´Ù °°ÀÌ È®Àå DLLÀ» ºôµåÇÒ ¶§:

# define DECLARE_DYNAMIC(class_name) \
º¸È£ µÈ: \
 nbsp; Á¤Àû CRuntimeClass * ÆÄ½ºÄ® _GetBaseClass(); \
 ? °ø°ø: \
 ? Á¤Àû AFX_DATA CRuntimeClass Ŭ·¡½º # # class_name; \
 ? °¡»ó CRuntimeClass * GetRuntimeClass() const; \(&N)

"Á¤Àû AFX_DATA" ½ÃÀÛ ÇÏ´Â ÁÙÀº Ŭ·¡½º ³»ºÎÀÇ Á¤Àû °³Ã¼¸¦ ¼±¾ð ÇÏ °í ÀÖ´Ù. ÀÌ Å¬·¡½º¸¦ ¿Ã¹Ù¸£°Ô ³»º¸³»°í Ŭ¶óÀÌ¾ðÆ®¿¡¼­ ·±Å¸ÀÓ Á¤º¸¿¡ ¾×¼¼½º.EXEÀÌ Á¤Àû °³Ã¼¸¦ ¼öÃâ ÇØ¾ß ÇÕ´Ï´Ù. Á¤Àû °³Ã¼´Â AFX_DATAÇÑÁ¤ÀÚ·Î ¼±¾ð µÈ, ¶§¹®¿¡ Çϸé AFX_DATA ¸¦ DLLÀ» ºôµåÇÒ ¶§ __declspec (dllexport) À» Á¤ÀÇ ÇÏ °í ±ÍÇÏÀÇ Å¬¶óÀÌ¾ðÆ® ½ÇÇà ÆÄÀÏÀ» ºôµåÇÒ ¶§ __declspec(dllimport) ·Î Á¤ÀÇ¡£

À§¿¡¼­ ¼³¸í Çß µíÀÌ AFX_EXT_CLASS ÀÌ¹Ì ÀÌ·± ¹æ½ÄÀ¸·Î Á¤ÀÇ µË´Ï´Ù. ±×·¡¼­ ±×³É ´Ù½Ã AFX_DATA AFX_EXT_CLASS ¿Í µ¿ÀÏ Å¬·¡½º Á¤ÀÇ ÁÖÀ§¿¡ Çʿ䡣

¿¹¸¦ µé¾î:

nbsp;??# undef AFX_DATA
 ? # define AFX_DATA¸¦ AFX_EXT_CLASS
 ? CExampleView Ŭ·¡½º: °ø¿ë CView
 ? {
 ??? DECLARE_DYNAMIC()
 ??? / /... Ŭ·¡½º Á¤ÀÇ...
 ? };
 ? # undef AFX_DATA
 ? # define AFX_DATA(&N)

MFC´ÂÀÌ ±â¼úÀº ÀÌ·¯ÇÑ ¸ðµç ½Ã³ª¸®¿À¿¡ ´ëÇØ ÀÛµ¿ ÇÏ¹Ç·Î ÇØ´ç ¸ÅÅ©·Î ³»¿¡¼­ Á¤ÀÇ ÇÏ´Â µ¥ÀÌÅÍ Ç׸ñ¿¡ Ç×»ó AFX_DATA ±âÈ£¸¦ »ç¿ë ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î DECLARE_MESSAGE_MAP ¿¡ ´ë ÇÑ ÀÛµ¿¡£

¸Þ¸ðnbsp;??Á¤Àû µ¥ÀÌÅÍ ¸â¹ö°¡ ÀÚµ¿À¸·Î ³»º¸³»Áý´Ï´Ù Ŭ·¡½ºÀÇ ¸â¹ö¸¦ ¼±ÅÃÇÑ ¾Æ´Ï¶ó Àüü Ŭ·¡½º¸¦ ³»º¸³»´Â °æ¿ì(&N)¡£

DECLARE_SERIAL ¹× IMPLEMENT_SERIAL ¸ÅÅ©·Î »ç¿ë Çϴ Ŭ·¡½º¿¡ ´ë ÇÑ CArchive ÃßÃâ ¿¬»êÀÚ¸¦ ÀÚµ¿À¸·Î ³»º¸³»·Á¸é µ¿ÀÏÇÑ ±â¹ýÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. Ŭ·¡½º ¼±¾ðÀ» °ýÈ£·Î ¹­±â ¿© ¾ÆÄ«ÀÌºê ¿¬»êÀÚ¸¦ ³»º¸³À´Ï´Ù (¿¡ À§Ä¡ ÇÕ´Ï´Ù.H ÆÄÀÏ) ´ÙÀ½ ÄÚµå¿Í:

# undef AFX_API
# define AFX_API AFX_EXT_CLASS

lt; ¿©±â¿¡ ±ÍÇÏÀÇ Å¬·¡½º ¼±¾ðÀ» >

# undef AFX_API
# define AFX_API

_AfxextÀÇ Á¦ÇÑ »çÇ×

È®Àå DllÀÇ ¿©·¯ ·¹À̾ ÇÏÁö ¾Ê¾Æµµ È®Àå Dll¿¡ ´ë ÇÑ _AFXEXT pre-processor ±âÈ£¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. È®Àå Dll È£Ãâ ¶Ç´Â ÀÚ½ÅÀÇ È®Àå Dll MFC Ŭ·¡½º¿¡¼­ ÆÄ»ý ÇÑ ´ÙÀ½ Ŭ·¡½º¿¡¼­ ÆÄ»ý ÇÏ´Â °æ¿ì ¸ðÈ£¼ºÀ» ÇÇÇϱâ À§ÇØ »ç¿ëÀÚ °íÀ¯ÀÇ Àü󸮱⠱âÈ£¸¦ »ç¿ë ÇØ¾ß ÇÕ´Ï´Ù.

¹®Á¦´Â w i n 32¸¦ ¸í½ÃÀûÀ¸·Î ¼±¾ð ÇØ¾ß ÇÕ´Ï´Ù ¸ðµç µ¥ÀÌÅÍ __declspec (dllexport) À¸·Î DLL¿¡¼­ °¡Á®¿Ã ¼ö ÀÖÀ¸¸é DLL ¹× __declspec(dllimport) ¿¡¼­ ³»º¸³¾ °æ¿ì ÀÌ´Ù. _AFXEXT¸¦ Á¤ÀÇÇÒ ¶§ MFC Çì´õ AFX_EXT_CLASS ¿Ã¹Ù¸£°Ô Á¤ÀÇ µÇ¾ú´ÂÁö È®ÀΡ£

¿©·¯ °³ÀÇ ·¹À̾ ÀÖÀ» ¶§ AFX_EXT_CLASS °°Àº ÇϳªÀÇ ±âÈ£ ÃæºÐ ÇÏÁö ¾Ê½À´Ï´Ù, ¶§¹®¿¡ È®Àå DLL ¼ö ÀÖ½À´Ï´Ù »õ Ŭ·¡½º¸¦ ³»º¸³¾ »Ó¸¸ µÉ ¶Ç ´Ù¸¥ È®Àå DLL¿¡¼­¿¡¼­ ´Ù¸¥ Ŭ·¡½º¸¦ °¡Á®¿Ã. ÀÌ ¹®Á¦¸¦ ó¸® Çϱâ À§ÇØ DLLÀ» »ç¿ë ÇÏ ¿© ´ë DLL ÀÚü¸¦ ±¸Ãà ÇÏ´Â ³ªÅ¸³»´Â Ưº° ÇÑ pre-processor ±âÈ£¸¦ »ç¿ë ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, µÎ °³ÀÇ È®Àå Dll, A.DLL, B.DLL »ó»ó. ±×µéÀº °¢°¢ A.H¿Í B.H, ÀϺΠŬ·¡½º¸¦ °¢°¢ ³»º¸³À´Ï´Ù. B.DLLÀº A.DLL¿¡¼­ Ŭ·¡½º¸¦ »ç¿ëÇÕ´Ï´Ù. Çì´õ ÆÄÀÏ ÀÌ·±½ÄÀ¸·Î »ý°åÀ» °Í ÀÌ´Ù:

/ / A.H
# ifdef A_IMPL
 nbsp; # define CLASS_DECL_A __declspec (dllexport)
# else
 ? # define CLASS_DECL_A __declspec(dllimport)
# endif

CLASS_DECL_A CExampleA Ŭ·¡½º: °ø¿ë CObject
{... Ŭ·¡½º Á¤ÀÇ...};

/ / B.H
# ifdef B_IMPL
 ? # define CLASS_DECL_B __declspec (dllexport)
# else
 ? # define CLASS_DECL_B __declspec(dllimport)
# endif

CLASS_DECL_B CExampleB Ŭ·¡½º: °ø¿ë CExampleA
{... Ŭ·¡½º Á¤ÀÇ...}(&N)

/D A_IMPL¿Í ÇÔ²² ±¸Ãà ÇÏ °í A.DLLÀÌ ºôµåµÉ ¶§¿Í ±×°ÍÀº /D B_IMPL³»Àå B.DLLÀÌ ºôµåµÉ ¶§. °¢ DLL¿¡ ´ëÇØ º°µµ ±âÈ£¸¦ »ç¿ë ÇÏ ¿© Cexampleb´Â ³»º¸³»°í CExampleA B.DLLÀ» ºôµåÇÒ ¶§ °¡Á®¿Â. Cexamplea´Â A.DLLÀ» ºôµåÇÒ ¶§ ³»º¸³»°í °¡Á®¿À´Â B.DLL (¶Ç´Â ´Ù¸¥ Ŭ¶óÀ̾ðÆ®)¿¡¼­ »ç¿ë ÇÏ´Â °æ¿ì¡£

³»Àå AFX_EXT_CLASS ¿Í _AFXEXT pre-processor ±âÈ£¸¦ »ç¿ë ÇÏ´Â °æ¿ì ÀÌ·¯ÇÑ À¯ÇüÀÇ ·¹ÀÌ¾î ¸µÀ» ÇÒ ¼ö ¾ø½À´Ï´Ù. À§¿¡¼­ ¼³¸í ÇÏ´Â ±â¼úÀ» ¹æ½ÄÀ¸·Î ¾È ´Þ¸® OLE, µ¥ÀÌÅͺ£À̽º ¹× ³×Æ®¿öÅ© È®Àå DllÀ» ºôµåÇÒ ¶§ MFC ÀÚü ¸ÞÄ¿´ÏÁòÀ» »ç¿ë ÇÏ ¿©ÀÌ ¹®Á¦¸¦ ÇØ°á¡£

¾Æ´Ï¶ó Àüü Ŭ·¡½º¸¦ ³»º¸³»´Â

´Ù½Ã Àüü Ŭ·¡½º¸¦ ³»º¸³»´Â ÇÏÁö ¶§ Ưº° ÇÑ ÁÖÀÇ ÇØ¾ß ÇÕ´Ï´Ù. MFC ¸ÅÅ©·Î¿¡¼­ ¸¸µç ÇÊ¿äÇÑ µ¥ÀÌÅÍ Ç׸ñÀÌ ¿Ã¹Ù¸£°Ô ³»º¸³¾ ¼ö ÀÖµµ·Ï ÇØ¾ß ÇÕ´Ï´Ù. AFX_DATA ¸¦ ƯÁ¤ Ŭ·¡½ºÀÇ ¸ÅÅ©·Î¿¡ ´Ù½Ã ¿©ÀÌ ¼öÇàÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¾ðÁ¦ µç Áö Àüü Ŭ·¡½º¸¦ ³»º¸³»´Â ÇÏÁö ÀÌ·ç¾îÁ®¾ß ÇÑ´Ù¡£

¿¹¸¦ µé¾î:

/ / A.H
# ifdef A_IMPL
 nbsp; # define CLASS_DECL_A _declspec(dllexport)
# else
 ? # define CLASS_DECL_A _declspec(dllimport)
 ? # endif

# undef AFX_DATA
# define AFX_DATA CLASS_DECL_A

CExampleA Ŭ·¡½º: °ø¿ë CObject
{
 ? DECLARE_DYNAMIC()
 ? CLASS_DECL_A int SomeFunction();
 ? //class Á¤ÀÇ ÇÕ´Ï´Ù.
 ? .
 ? .
};

# undef AFX_DATA
# define AFX_DATA(&N)

DllMain

´ÙÀ½Àº È®Àå DLL¿¡ ´ë ÇÑ ±âº» ¼Ò½º ÆÄÀÏ¿¡ ¹èÄ¡ ÇØ¾ß ÇÏ´Â Á¤È®ÇÑ ÄÚµåÀÔ´Ï´Ù. ±×°ÍÀº Ç¥ÁØ Æ÷ÇÔ ÈÄ¿Í ¾ß ÇÑ´Ù. ±× Appwizard¸¦ »ç¿ë ÇÏ ¿© È®Àå DLL¿¡ ´ë ÇÑ ½ÃÀÛ ÆÄÀÏÀ» ¸¸µé ¶§ Á¦°ø DllMain ¿¡ ´ë ÇÑ Âü°í¡£

# include "afxdllx.h"

Á¤Àû AFX_EXTENSION_MODULE extensionDLL;

extern "C" int APIENTRY DllMain (HINSTANCE hInstance, DWORD dwReason, LPVOID)
{
 nbsp; °æ¿ì (dwReason DLL_PROCESS_ATTACH = =)
 ? {
 ???? / / È®Àå DLL ÃʱâÈ­ if (!AfxInitExtensionModule (
 ??????????? extensionDLL, hInstance))
 ??????? 0; ¹Ýȯ

/ / TODO: ¿©±â¿¡ ´Ù¸¥ ÃʱâÈ­ ÀÛ¾÷À» ¼öÇà
 ? }
 ? else if (dwReason DLL_PROCESS_DETACH = =)
 ? {
 ???? / / È®Àå DLL ´ç ÇÁ·Î¼¼½º Á¾·á
 ???? AfxTermExtensionModule(extensionDLL);

/ / TODO: ¿©±â¿¡ ´Ù¸¥ Á¤¸® ÀÛ¾÷À» ¼öÇà
 ? }
 ? ¹Ýȯ 1;?? / / È®ÀÎ
}(&N)

CDynLinkLibrary °³Ã¼°¡ ¸¸µé¾îÁú ¶§ AfxInitExtensionModule À» È£Ãâ »Ó¸¸ ¾Æ´Ï¶ó, ³ªÁß¿¡ »ç¿ë Çϱâ À§ÇØ ÇØ´ç °³Ã¼ ÆÑÅ͸® (COleObjectFactory °³Ã¼) ¸ðµâ ·±Å¸ÀÓ Å¬·¡½º (CRuntimeClass ±¸Á¶Ã¼)À» ĸóÇÕ´Ï´Ù. (¼±Åà »çÇ×) È£Ãâ AfxTermExtensionModule ÀÖ°Ô MFC Á¤¸® È®Àå DLL °¢ ÇÁ·Î¼¼½º (¾î¶² ÇÁ·Î¼¼½º°¡ Á¾·á ¶Ç´Â DLLÀÌ ·Îµå FreeLibrary È£ÃâÀÇ °á°ú·Î ¹ß»ý)À» ºÐ¸® ÇÏ´Â °æ¿ì È®Àå DLL¿¡¼­¿¡¼­. ÀÌÈÄ ´ëºÎºÐÀÇ È®Àå DllÀ» µ¿ÀûÀ¸·Î ·Îµå µÇÁö ¾Ê½À´Ï´Ù (ÀϹÝÀûÀ¸·Î, ±×µéÀº ±×µéÀÇ °¡Á®¿À±â ¶óÀ̺귯¸®¸¦ ÅëÇØ ¿¬°á µÈ), AfxTermExtensionModule À» È£Ãâ ÀϹÝÀûÀ¸·Î ÇÊ¿ä ÇÏÁö ¾Ê½À´Ï´Ù¡£

ÀÀ¿ë ÇÁ·Î±×·¥ ·Îµå ÇÏ °í µ¿ÀûÀ¸·Î È®Àå Dll ÇØÁ¦ ÇÏ´Â °æ¿ì Ç¥½Ã above.nbsp;·Î AfxTermExtensionModule À» È£Ãâ ÇØ¾ß ¶ÇÇÑ ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ´ÙÁß ½º·¹µå¸¦ »ç¿ë ÇÏ´Â °æ¿ì (Win32 ÇÔ¼ö LoadLibrary ¹× FreeLibrary)´Â ´ë½Å AfxLoadLibrary ¹× AfxFreeLibrary ¸¦ »ç¿ë ÇØ¾ß ÇÕ´Ï´Ù. È®Àå DLL ·Îµå ÇÏ °í ¾ð·ÎµåÇÒ ¶§ ½ÇÇà ½ÃÀÛ ¹× Á¾·á Äڵ尡 Àü¿ª MFC »óÅ ¼Õ»ó µÇÁö ¾Ê½À´Ï´Ù ÁöŰ´Â AfxLoadLibrary ¹× AfxFreeLibrary ¸¦ »ç¿ë ÇÏ ¿©(&N)¡£

Çì´õ ÆÄÀÏ AFXDLLXÀÔ´Ï´Ù.È®Àå Dll, AFX_EXTENSION_MODULE ¹× CDynLinkLibrary ¿¡ ´ë ÇÑ Á¤ÀÇ µî¿¡¼­ »ç¿ë µÇ´Â ±¸Á¶¿¡ ´ë ÇÑ Æ¯º° ÇÑ defintions¸¦ Æ÷ÇÔ ÇÏ´Â H¡£

±Û·Î¹ú extensionDLL °ú °°ÀÌ ¼±¾ð ÇØ¾ß ÇÕ´Ï´Ù. 16 ºñÆ® ¹öÀüÀÇ MFC¿Í ´Þ¸® ¸Þ¸ð¸®¸¦ ÇÒ´çÇÒ ¼ö ¹× MFC ±â´ÉÀ» È£Ãâ ÇÏ´ÂÀÌ ½Ã°£ µ¿¾È MFCxx.DLL DllMain À» È£Ãâ ÇÏ´Â ½Ã°£¿¡ ÀÇÇØ ¿ÏÀüÈ÷ ÃʱâÈ­ µÇ±â ¶§¹®¡£

¸®¼Ò½º ¹× Ŭ·¡½º °øÀ¯

°£´ÜÇÑ MFC È®Àå Dll Ŭ¶óÀÌ¾ðÆ® ÀÀ¿ë ÇÁ·Î±×·¥ ¹× ¾Æ¹«°Íµµ ´õ ¸¹Àº ¸î °¡Áö ³·Àº ´ë¿ªÆø ÇÔ¼ö¸¦ ³»º¸³¾¸¸ ÇÊ¿ä ÇÕ´Ï´Ù. ´õ ¸¹Àº »ç¿ëÀÚ-ÀÎÅÍÆäÀ̽º ÁýÁß Dll Ŭ¶óÀÌ¾ðÆ® ÀÀ¿ë ÇÁ·Î±×·¥¿¡ ¸®¼Ò½º ¹× c + + Ŭ·¡½º¸¦ ¼öÃâ ÇϰíÀÚ ÇÒ ¼ö ÀÖ½À´Ï´Ù.

¸®¼Ò½º ³»º¸³»±â´Â ¸®¼Ò½º ¸ñ·ÏÀ» ÅëÇØ ¼öÇà µË´Ï´Ù. °¢ ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ CDynLinkLibrary °³Ã¼ÀÇ ´Üµ¶À¸·Î ¸µÅ© µÈ ¸ñ·ÏÀÌÀÔ´Ï´Ù. ¸®¼Ò½º ·Îµå ¸®¼Ò½º ÇöÀç ¸®¼Ò½º ¸ðµâ (AfxGetResourceHandle)¿¡¼­ ù ¹øÂ° º¸À̴ ǥÁØ MFC ±¸ÇöÀÇ ´ëºÎºÐÀ» ã°í ±×¸®°í °æ¿ì ¿äû µÈ ¸®¼Ò½º¸¦ ·Îµå ÇÏ·Á°í ½Ãµµ ÇÏ´Â CDynLinkLibrary °³Ã¼ ¸ñ·Ï ãÀ» ¼ö ¾ø½À´Ï´Ù µµº¸¡£

C + + Ŭ·¡½º À̸§À» ÁöÁ¤ ÇÏ´Â c + + °³Ã¼ÀÇ µ¿Àû »ý¼ºÀÌ ºñ½ÁÇÕ´Ï´Ù. MFC °³Ã¼ deserialization ¸ÞÄ¿´ÏÁò ¸ðµç CRuntimeClass °³Ã¼¸¦ ÀÌÀü¿¡ ÀúÀå µÈ ¹«½¼¿¡ µû¶ó ÇÊ¿äÇÑ Çü½ÄÀÇ c + + °³Ã¼¸¦ µ¿ÀûÀ¸·Î ¸¸µé¾î¼­ À籸¼ºÇÒ ¼ö ÀÖµµ·Ï µî·ÏÀ» ÇÒ Çʿ䰡¡£

DECLARE_SERIAL´Â È®Àå DLLÀÇ¿¡¼­ Ŭ·¡½º¸¦ »ç¿ë ÇÏ ¿© Ŭ¶óÀÌ¾ðÆ® ÀÀ¿ë ÇÁ·Î±×·¥À» ¿øÇÏ´Â °æ¿ì¿¡ Ŭ¶óÀÌ¾ðÆ® ÀÀ¿ë ÇÁ·Î±×·¥¿¡ Ç¥½Ã µÇµµ·Ï Ŭ·¡½º¸¦ ³»º¸³¾ °ÍÀÔ´Ï´Ù ÇØ¾ß ÇÕ´Ï´Ù. ¶ÇÇÑ ÀÌ·¸°Ô °È°í CDynLinkLibrary ¸ñ·Ï¡£

MFC °í±Þ °³³ä »ùÇÃÀÇ °æ¿ì DLLHUSK, ¸ñ·ÏÀ» ´ÙÀ½°ú °°Àº

¸Ó¸®-gt; ? DLLHUSKÀÔ´Ï´Ù.EXE-¶Ç´Â-DLLHUSKÀÔ´Ï´Ù.EXE
 ????????????? |????????????????????? |
 ???????? TESTDLL2ÀÔ´Ï´Ù.DLL TESTDLL2.DLL
 ????????????? |????????????????????? |
 ???????? TESTDLL1ÀÔ´Ï´Ù.DLL TESTDLL1.DLL
 ????????????? |????????????????????? |
 ????????? MFCO42DÀÔ´Ï´Ù.DLL??????????????? |
 ????????????? |????????????????????? |
 ????????? MFCD42DÀÔ´Ï´Ù.DLL??????????????? |
 ????????????? |????????????????????? |
 ?????????? MFC42DÀÔ´Ï´Ù.DLL MFC42.DLL(&G)

Mfcxx.dllÀº ´ë°³ ¸®¼Ò½º ¹× Ŭ·¡½º ¸ñ·ÏÀÇ ¸¶Áö¸·. Mfcxx.dll¿¡´Â ¸ðµç Ç¥ÁØ ¸í·É Id¿¡ ´ë ÇÑ ÇÁ·ÒÇÁÆ® ¹®ÀÚ¿­À» ºñ·Ô ÇÏ ¿© Ç¥ÁØ MFC ¸®¼Ò½ºÀÇ ¸ðµç Æ÷ÇÔ µË´Ï´Ù. Dll°ú Ŭ¶óÀÌ¾ðÆ® ÀÀ¿ë ÇÏÁö ¾Ê´Â Çã¿ë ¸ñ·ÏÀÇ ²¿¸®¿¡ ¹èÄ¡´Â¿¡ ÀÇÁ¸ Mfcxx.dllÀÇ °øÀ¯ ¸®¼Ò½º ´ë½Å ÇÏÁö¸¸ Ç¥ÁØ MFC ¸®¼Ò½ºÀÇ ÀÚü º¹»çº»¡£

¸®¼Ò½º ¹× ¸ðµç DllÀÇ Å¬·¡½º À̸§À» Ŭ¶óÀÌ¾ðÆ® ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ³×ÀÓ ½ºÆäÀ̽º¿¡ º´ÇÕ ´ÜÁ¡Àº ¾î¶² Id¸¦ Á¶½É ÇØ¾ß ÇÏ´Â ¶Ç´Â À̸§À» ¼±Åà ÇϰíÀÖ´Ù. ¹°·Ð ÇÏÁö Ŭ¶óÀÌ¾ðÆ® ÀÀ¿ë ÇÁ·Î±×·¥¿¡ ¸®¼Ò½º ¶Ç´Â CDynLinkLibrary °³Ã¼¸¦ ³»º¸³»±â ÇÏ ¿©ÀÌ ±â´ÉÀ» ÇØÁ¦ÇÒ ¼ö ÀÖ½À´Ï´Ù. DLLHUSK »ùÇà ¿©·¯ Çì´õ ÆÄÀÏÀ» »ç¿ë ÇÏ ¿© °øÀ¯ ¸®¼Ò½º À̸§ °ø°£À» °ü¸® ÇÕ´Ï´Ù. °øÀ¯ ¸®¼Ò½º ÆÄÀÏ »ç¿ë¿¡ ´ë ÇÑ ÀÚ¼¼ÇÑ µµ¿ò¸»¿¡ ´ë ÇÑ ±â¼ú ³ëÆ® 35 ÂüÁ¶¡£

DLL ÃʱâÈ­

À§¿¡¼­ ¼³¸í Çß µíÀÌ ÀϹÝÀûÀ¸·Î Ŭ¶óÀÌ¾ðÆ® ÀÀ¿ë ÇÁ·Î±×·¥À» ±ÍÇÏÀÇ ¸®¼Ò½º ¹× Ŭ·¡½º¸¦ ³»º¸³¾ ÇÏ·Á¸é CDynLinkLibrary °³Ã¼¸¦ ¸¸µå´Â ¿øÇÒ °ÍÀÔ´Ï´Ù. DLLÀ» ÃʱâÈ­ ÇÏ´Â ³»º¸³½µÈ ÁøÀÔÁ¡À» Á¦°ø ÇØ¾ß ÇÕ´Ï´Ù. ÃÖ¼ÒÇÑÀÌ Àμö¸¦ »ç¿ë ÇÏ °í ¾Æ¹«°Íµµ ¹Ýȯ void ·çƾ ÇÏÁö¸¸ ´ç½Å ó·³ ¾Æ¹«°Íµµ µÉ ¼ö ÀÖ½À´Ï´Ù.

ÀÌ ¹æ¹ýÀ» »ç¿ë ÇÏ´Â °æ¿ì °¢ Ŭ¶óÀÌ¾ðÆ® ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ DLLÀ» »ç¿ë ÇÏ °í ½Í¾îÀÌ ÃʱâÈ­ ·çƾÀ» È£Ãâ ÇØ¾ß ÇÕ´Ï´Ù. ¼ö ¶ÇÇÑ ÇÒ´çÀÌ CDynLinkLibrary °³Ã¼ DllMain ¿¡¼­ AfxInitExtensionModule À» È£Ãâ Á÷ÈÄ¡£

ÃʱâÈ­ ·çƾÀÇ ÇöÀç ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ Èü, È®Àå DLL Á¤º¸¸¦ À¯¼±¿¡¼­ CDynLinkLibrary °³Ã¼¸¦ ¸¸µé¾î¾ß ÇÕ´Ï´Ù. ÀÌ ´ÙÀ½°ú °°ÀÌ ÇÒ ¼ö ÀÖ½À´Ï´Ù.:

extern "C" extern ¹«È¿ WINAPI InitXxxDLL()
{
 nbsp; »õ·Î¿î CDynLinkLibrary(extensionDLL);
}(&N)

ÀÏ»óÀûÀÎ À̸§,ÀÌ ¿¹Á¦¿¡¼­ InitXxxDLL ´Â ´ç½ÅÀÌ ¿øÇÏ´Â ¹«¾ùÀÌ µç µÉ ¼ö ÀÖ½À´Ï´Ù. µÉ Çʿ䰡 ¾ø½À´Ï´Ù extern ¡°C¡± , ÇÏÁö¸¸ ÇÏ °í ±×·¸°Ô ÇÏ °Ô À¯Áö Çϱâ À§ÇØ ½±°Ô ³»º¸³»±â ¸ñ·Ï¡£

¸Þ¸ðnbsp;??±ÍÇÏÀÇ È®Àå ÀÏ¹Ý DLL¿¡¼­ DLLÀ» »ç¿ë ÇÏ´Â °æ¿ì¿¡ÀÌ ÃʱâÈ­ ÇÔ¼ö¸¦ ³»º¸³»¾ß ÇÕ´Ï´Ù. ÀÌ ÇÔ¼ö´Â ÀÏ¹Ý DLL¿¡¼­ È®Àå DLL Ŭ·¡½º ¶Ç´Â ¸®¼Ò½º¸¦ »ç¿ë Çϱâ Àü¿¡ È£Ãâ ÇØ¾ß ÇÕ´Ï´Ù(&N).

Ç׸ñ ³»º¸³»±â

Ŭ·¡½º¸¦ ³»º¸³»´Â °£´ÜÇÑ ¹æ¹ýÀ» °¢ Ŭ·¡½º ¹× Àü¿ª ÇÔ¼ö¸¦ ³»º¸³¾ __declspec(dllimport) ¿Í __declspec (dllexport)À» »ç¿ë ÇÏ´Â °ÍÀÔ´Ï´Ù. À̰ÍÀ» ÈξÀ ´õ ½±°Ô ¸¸µç´Ù ÇÏÁö¸¸ ´ú ´ú Á¦¾î ±â´ÉÀº ¹«¾ù ¾òÀ» ³»º¸³½ ÇÔ¼ö¸¦ ¼­ ¼ö·Î ³»º¸³¾ ¼ö ¾ø½À´Ï´Ù ÀÌÈÄ °¢ ÁøÀÔÁ¡ (¾Æ·¡ ¼³¸í ÂüÁ¶)¸¦ ¸í¸í ÇÏ´Â °Í º¸´Ù È¿À²ÀûÀÔ´Ï´Ù. À̰ÍÀº TESTDLL1 ¹× TESTDLL2 ÀÚ½ÅÀÇ Ç׸ñÀ» ³»º¸³»´Â µ¥ »ç¿ë ÇÏ´Â ¹æ¹ý¡£

´õ È¿À²ÀûÀÎ ¹æ¹ý (Mfcxx.dll¿¡ ÀÇÇØ »ç¿ë µÇ´Â ¹æ¹ý) ÀÌ¸ç °¢ Ç׸ñÀ» ¸í¸í ÇÏ ¿© °¢ Ç׸ñÀ» Á÷Á¢ ¼öÃâ ÇÏ °í ÀÖ½À´Ï´Ù.DEF ÆÄÀÏÀÔ´Ï´Ù. ÀÌÈÄ ¿ì¸®ÀÇ DLL (Áï, ¸ðµç)¿¡¼­ ¼±ÅÃÀû ¼öÃâÀ» ³»º¸³»´Â ¿ì¸®°¡ ¿ì¸®°¡ ¿ì¸®°¡ ¼öÃâ ÇϰíÀÚ Çϴ ƯÁ¤ ÀÎÅÍÆäÀ̽º¸¦ °áÁ¤ ÇØ¾ß ÇÕ´Ï´Ù. À̰ÍÀº ¾î·Á¿î Ç׸ñ ÇüÅ·Π¸Í±Û¸µµÈ À̸§À» ¸µÄ¿¿¡ ÁöÁ¤ ÇØ¾ß ÇÕ´Ï´Ù ÀÌÈÄ ÇÕ´Ï´Ù.DEF ÆÄÀÏÀÔ´Ï´Ù. ´ç½ÅÀÌ Á¤¸»·Î ±×°Í¿¡ ´ë ÇÑ ½Éº¼¸¯ ¸µÅ©°¡ ÇÊ¿ä ÇÏÁö ¾ÊÀ¸¸é c + + Ŭ·¡½º¸¦ ³»º¸³»Áö ¸¶½Ê½Ã¿À¡£

¸¸¾à ´ç½ÅÀÌ ½Ãµµ¿Í Ŭ·¡½º c + +¸¦ ³»º¸³»±â´Â.DEF ÆÄÀÏ Àü¿¡ÀÌ ¸ñ·ÏÀ» ÀÚµ¿À¸·Î »ý¼º ÇÏ´Â µµ±¸¸¦ °³¹ß ÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù. ÀÌ ÇÒ ¼ö ÀÖ½À´Ï´Ù µÎ ´Ü°è ¿¬°á ÇÁ·Î¼¼½º¸¦ »ç¿ë ÇÏ ¿©. ¾Æ´Ï ¼öÃâÀ¸·Î ¹ø DLL¿¡ ¿¬°á ÇÏ °í ¸µÄ¿¸¦ »ý¼ºÇÒ ¼ö ÀÖµµ·Ï ÇÑ.¸Ê ÆÄÀÏÀÔ´Ï´Ù. ÇÕ´Ï´Ù.¸Ê ÆÄÀÏ »ý¼ºÀ» ³»º¸³½ ÇÔ¼ö ¸ñ·Ï ÀϺΠÁ¶ÀÛ ÇÔ²² »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù¿¡ ´ë ÇÑ ³»º¸³»±â Ç׸ñÀ» »ý¼º ÇÏ µ¥ ¼ö ÀÖ½À´Ï´Ù ±ÍÇÏÀÇ.DEF ÆÄÀÏÀÔ´Ï´Ù. (ºñ·Ï ±×°ÍÀº ¿ÏÀüÈ÷ ÀÚµ¿ Æ©´× µ¿¾È¿¡ ÇÑ ¹ø¾¿ ¸î °¡Áö ¼ÕÀÌ ÇÊ¿ä) °°Àº ÇÁ·Î¼¼½º¿Í ÇÔ²² MFCxx.DLL ¹× OLE, ¼öõ, ¹øÈ£¿¡¼­ µ¥ÀÌÅͺ£À̽º È®Àå Dll¿¡ ´ë ÇÑ ³»º¸³»±â ¸ñ·Ï »ý¼º¡£

CWinApp ´ë CDynLinkLibrary

MFC È®Àå DLLÀº CWinAppÀÖÁö ¾Ê½À´Ï´Ù-ÆÄ»ý µÈ °³Ã¼´Â ÀÚ½ÅÀÇ; ´ë½Å CWinApp¿Í ÇÔ²² ÀÛ¾÷À» ÇØ¾ß ÇÕ´Ï´Ù-Ŭ¶óÀÌ¾ðÆ® ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ °³Ã¼¸¦ ÆÄ»ý ÇÕ´Ï´Ù. Áï, Ŭ¶óÀÌ¾ðÆ® ÀÀ¿ë ÇÁ·Î±×·¥¿¡ ±âº» ¸Þ½ÃÁö ÆßÇÁ, À¯ÈÞ ·çÇÁ¸¦ ¼ÒÀ¯¡£

MFC È®Àå DLLÀÌ °¢ ÀÀ¿ë ÇÁ·Î±×·¥¿¡ ´ë ÇÑ Ãß°¡ µ¥ÀÌÅ͸¦ À¯Áö ÇÏ´Â °æ¿ì¿¡ CDynLinkLibrary ¿¡¼­ »õ Ŭ·¡½º¸¦ ÆÄ»ý ÇÏ °í À§ÀÇ ·çƾÀ» ¼³¸í ÇÏ´Â Initxxxdll¿¡ ¸¸µé ¼ö ÀÖ½À´Ï´Ù. ½ÇÇà ÇÏ´Â °æ¿ì DLLÀÇ CDynLinkLibrary °³Ã¼´Â ƯÁ¤ È®Àå DLL¿¡ ´ë ÇÑ Çϳª¸¦ ã¾Æ ÇöÀç ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ¸ñ·ÏÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.

DLL ±¸Çö¿¡¼­ ¸®¼Ò½º¸¦ »ç¿ë ÇÏ ¿©

À§¿¡¼­ ¼³¸í Çß µíÀÌ ±âº» ¸®¼Ò½º ºÎÇÏ ÃÖÃÊÀÇ EXE ¶Ç´Â DLL´Â ¿äûÇÑ ¸®¼Ò½º¿¡ ´ë ÇÑ Ã£°í CDynLinkLibrary °³Ã¼ ¸ñ·ÏÀ» °É¾î ³ª°¥ °Í ÀÌ´Ù. ¸ðµç ³»ºÎ ÄÚµå »Ó¸¸ ¾Æ´Ï¶ó ¸ðµç MFC Api AfxFindResourceHandle ¸¦ »ç¿ë ÇÏ ¿© µµº¸ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù ¾Æ¹«¸® ¾î¶² ¸®¼Ò½º¸¦ ãÀ» ¼ö ÀÚ¿ø ¸ñ·Ï¡£

Api¸¦ »ç¿ë ÇÏ´Â °æ¿ì¿¡ ƯÁ¤ Àå¼Ò¿¡¼­ ¸®¼Ò½º¸¦ ·Îµå ÇÏ·Á¸é AfxGetResourceHandle ¹× AfxSetResourceHandle ÀÌÀü ÇÚµéÀ» ÀúÀå ÇÏ °í »õ·Î¿î ÇÚµéÀ» ¼³Á¤ ÇÕ´Ï´Ù. Ŭ¶óÀÌ¾ðÆ® ÀÀ¿ë ÇÁ·Î±×·¥¿¡ ¹Ýȯ Çϱâ Àü¿¡ ¿À·¡ µÈ ¸®¼Ò½º ÇÚµéÀ» º¹¿ø ÇØ¾ß ÇÕ´Ï´Ù. »ùÇà testdll2ÀÌÀÌ Á¢±ÙÀ» »ç¿ë ÇÏ ¿© ¸í½ÃÀûÀ¸·Î ·Îµå ÇÏ´Â ¸Þ´º¿¡ ´ë ÇÑ¡£

¸ñ·Ï »êÃ¥ ¾à°£ ´À¸³´Ï´Ù ¹× ¸®¼Ò½º ID ¹üÀ§¸¦ °ü¸® ÇØ¾ß ÇÏ´Â ´ÜÁ¡ÀÌ ÀÖ´Ù. ¿©·¯ È®Àå Dll¿¡ ¿¬°á Çϴ Ŭ¶óÀÌ¾ðÆ® ÀÀ¿ë ÇÁ·Î±×·¥ DLL ÀνºÅϽº ÇÚµéÀ» ÁöÁ¤ ÇÏÁö ¾Ê°íµµ DLL¿¡¼­ Á¦°øÇÑ ¸®¼Ò½º¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â ÀåÁ¡ÀÌ ÀÖ´Ù. AfxFindResourceHandle ÀÚ¿ø ¸ñ·ÏÀ» »êÃ¥ ÀÏÄ¡ Çϴ ƯÁ¤µÈ Ç׸ñ¿¡ ´ë ÇÑ º¸°í ÇÏ´Â µ¥ »ç¿ë ÇÏ´Â APIÀÔ´Ï´Ù. À̸§ ¹× ¸®¼Ò½ºÀÇ À¯ÇüÀ» ¼Ò¿ä µÇ °í óÀ½ ¹ß°ß µÈ ¸®¼Ò½º ÇÚµé (¶Ç´Â NULL)À» ¹Ýȯ ÇÕ´Ï´Ù.

DLL ¹öÀüÀ» »ç¿ë ÇÏ ¿© ÀÀ¿ë ÇÁ·Î±×·¥ ÀÛ¼º

ÀÀ¿ë ÇÁ·Î±×·¥ ¿ä±¸ »çÇ×

MFCÀÇ °øÀ¯ ¹öÀüÀ» »ç¿ë ÇÏ´Â ÀÀ¿ë ÇÁ·Î±×·¥ ¸î °¡Áö °£´ÜÇÑ ±ÔÄ¢À» µû¶ó¾ß ÇÕ´Ï´Ù.:

°³¹ß ȯ°æ ±¸Ãà

´ëºÎºÐ Ç¥ÁØ ±âº»°ªÀÇ ³»ºÎ ¸ÞÀÌÅ©ÆÄÀÏ »ç¿ë ÇÏ´Â °æ¿ì DLL ¹öÀüÀ» ±¸Ãà ÇÏ´Â ÇÁ·ÎÁ§Æ®¸¦ ½±°Ô º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù.

´ÙÀ½ ´Ü°è´Â NAFXCWD¿Í ¿¬°á µÇ¾î ¿Ã¹Ù¸£°Ô ÀÛµ¿ MFC ÀÀ¿ë ÇÁ·Î±×·¥À» °¡Á¤ ÇÕ´Ï´Ù.(µð¹ö±×)¿¡ ´ë ÇÑ LIB ¹× NAFXCWÀÔ´Ï´Ù.LIB (¼Ò¸Å)¿¡ ´ë ÇÑ ÇÏ·Á¸é MFC ¶óÀ̺귯¸®ÀÇ °øÀ¯ ¹öÀüÀ» »ç¿ë Çϵµ·Ï º¯È¯ ÇÕ´Ï´Ù. Visual c + + ȯ°æ¿¡¼­ ½ÇÇà ÇÏ °í ÀÖ°í ³»ºÎ ÇÁ·ÎÁ§Æ® ÆÄÀÏ¡£

  1. ºôµå ¸Þ´º¿¡¼­ ¼³Á¤À» ¼±Åà ÇÕ´Ï´Ù. ÇÁ·ÎÁ§Æ® ¼³Á¤ ¾Æ·¡ÀÇ ÀÏ¹Ý ÆäÀÌÁö¿¡¼­ ¼³Á¤ Microsoft Foundation Classes (MFCxx(d).dll) °øÀ¯ DLL¿¡¼­ MFC »ç¿ë¡£

NMAKE ºôµù

Visual c + +ÀÇ ¿ÜºÎ ¸ÞÀÌÅ©ÆÄÀÏÀ» ±â´ÉÀ» »ç¿ë ÇÏ´Â ¶Ç´Â Á÷Á¢ NMAKE »ç¿ë ÇÏ´Â °æ¿ì¿¡ ÄÄÆÄÀÏ·¯ ¹× ¸µÄ¿ ¿É¼ÇÀ» Áö¿ø Çϵµ·Ï ¸ÞÀÌÅ©ÆÄÀÏ ÆíÁý ÇØ¾ß

ÇÊ¿äÇÑ ÄÄÆÄÀÏ·¯ Ç÷¡±×:

/ /MD D_AFXDLL

/ D_AFXDLL

Ç¥ÁØ MFC Çì´õ ÇÊ¿äÀÌ ±âÈ£¸¦ Á¤ÀÇÇÒ ¼ö:

/MD

ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­ C ·±Å¸ÀÓ ¶óÀ̺귯¸®ÀÇ DLL ¹öÀüÀ» »ç¿ë ÇØ¾ß ÇÕ´Ï´Ù.

´Ù¸¥ ¸ðµç ÄÄÆÄÀÏ·¯ Ç÷¡±×¿¡ µû¶ó MFC ±âº»°ª (¿¹¸¦ µé¾î, _DEBUG µð¹ö±×¿¡ ´ë ÇÑ)¡£

¶óÀ̺귯¸® ¸µÄ¿ ¸ñ·ÏÀ» ÆíÁý ÇÕ´Ï´Ù. NAFXCWD º¯°æ ÇÕ´Ï´Ù.MFCxxD.LIB LIB ¹× NAFXCW º¯°æ ÇÕ´Ï´Ù.LIB¸¦ MFCxx.LIB. MFCOxx[U]D.LIB, MFCDxx[U]D.LIB, ¹× MFCNxx[U]D.LIB ÀûÀý ÇÏ °Ô Ãß°¡ (MFC/OLE, µ¥ÀÌÅͺ£À̽º ¶Ç´Â ³×Æ®¿öÅ· Ŭ·¡½ºÀÇ »ç¿ëÀ» À§ÇÑ Çʼö). LIBC¸¦ ±³Ã¼ ÇÕ´Ï´Ù.MSVCRT¿Í LIB.LIBÀÔ´Ï´Ù. ´Ù¸¥ MFC ¶óÀ̺귯¸®¿Í ÇÔ²² ±×°ÍÀÌ Áß¿ä MFCxxD.LIB Àü¿¡ ¹èÄ¡ µË´Ï´Ù C-·±Å¸ÀÓ ¶óÀ̺귯¸®¡£

¸ðµÎ ´ç½ÅÀÇ ¼Ò¸Å¿¡ /d_afxdllÀ» Ãß°¡ ÇÏ °í µð¹ö±× ¸®¼Ò½º ÄÄÆÄÀÏ·¯ ¿É¼Ç (Çϳª ½ÇÁ¦·Î /r¿Í ¸®¼Ò½º¸¦ ÄÄÆÄÀÏÇÏ´Â) ¼öµµ ÀÖ½À´Ï´Ù. À̰ÍÀº ÃÖÁ¾ ½ÇÇà ÆÄÀÏÀ» MFC Dll¿¡ Á¸Àç ÇÏ´Â ¸®¼Ò½º¸¦ °øÀ¯ ÇÏ ¿© ÀÛÀº¡£

ÈÄ¿¡ ÀÌ·¯ÇÑ º¯°æ ³»¿ëÀÌ Àüü ´Ù½Ã ºôµå´Â Çʿ䡣

»ùÇà ºôµå

¸í·ÉÁÙ¿¡¼­ °øÀ¯ ȣȯ NMAKE ¸ÞÀÌÅ©ÆÄÀÏ ¶Ç´Â Visual c + +¿¡¼­ MFC »ùÇà ÇÁ·Î±×·¥ÀÇ ´ëºÎºÐÀ» °Ç¼³ µÉ ¼ö ÀÖ´Ù¡£

Mfcxx.dllÀ» »ç¿ë ÇÏ ¿© ÀÌ·¯ÇÑ »ùÇÃÀ» º¯È¯ ÇÏ·Á¸é ·ÎµåÇÒ ¼ö ÇÕ´Ï´Ù.MAK´Â Visual c + +·Î ÆÄÀÏ ¹× À§¿¡¼­ ¼³¸íÇÑ ÇÁ·ÎÁ§Æ® ¿É¼ÇÀ» ¼³Á¤ ÇÕ´Ï´Ù. NMAKE ºôµå¸¦ »ç¿ë ÇÏ´Â °æ¿ì ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù "AFXDLL = 1"¿¡ NMAKE ¸í·ÉÁÙ ¹× ±¸Ãà ¿¹Á¤ °øÀ¯ MFC ¶óÀ̺귯¸®¸¦ »ç¿ë ÇÏ ¿© »ùÇá£

MFC °í±Þ °³³ä »ùÇà DLLHUSK MFCÀÇ DLL ¹öÀüÀ» ³»Àå. ÀÌ »ùÇÃÀº »Ó¸¸ ¾Æ´Ï¶ó MFCxx.DLL·Î ¿¬°á µÈ ÀÀ¿ë ÇÁ·Î±×·¥À» ±¸Ãà ÇÏ´Â ¹æ¹ýÀ» º¸¿© ÁÝ´Ï´Ù. ÀÖÁö¸¸ ±×°ÍÀº ¶ÇÇÑÀÌ ±â¼ú ³ëÆ®ÀÇ µÞºÎºÐ¿¡¼­ ¼³¸í ÇÏ´Â MFC È®Àå Dll°ú °°Àº MFC DLL ÆÐŰ¡ ¿É¼ÇÀÇ ´Ù¸¥ ±â´ÉÀ» º¸¿© ÁÝ´Ï´Ù.

Æ÷Àå ³ëÆ®

([U] MFCxx DllÀÇ ÀÏ¹Ý Á¤Ç° ¹öÀü.DLL)Àº ÀÚÀ¯·Ó°Ô Àç¹èÆ÷ °¡´É ÇÕ´Ï´Ù. DllÀÇ µð¹ö±× ¹öÀüÀº ÀÚÀ¯·Ó°Ô Àç¹èÆ÷ °¡´É ÇÏ °í ÀÀ¿ë ÇÁ·Î±×·¥ °³¹ß µ¿¾È¿¡ »ç¿ë ÇØ¾ß ÇÑ´Ù¡£

µð¹ö±× Dll µð¹ö±ë Á¤º¸°¡ Á¦°ø µË´Ï´Ù. Visual c + + µð¹ö°Å¸¦ »ç¿ë ÇÏ ¿© DLL ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ½ÇÇàÀ» ÃßÀûÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸±¸®½º Dll (MFCxx [U].DLL) µð¹ö±ë Á¤º¸¸¦ Æ÷ÇÔ ÇÏÁö ¾Ê´Â¡£

»ç¿ëÀÚ ÁöÁ¤ ¶Ç´Â DllÀ» ´Ù½Ã ÀÛ¼º ÇÏ´Â °æ¿ì ´ÙÀ½ È£Ãâ ÇØ¾ß ±×µéÀÌ ¹º°¡ "MFCxx" The MFC SRC ÆÄÀÏ MFCDLL ¾Æ´Ñ ´Ù¸¥.MAK ºôµå ¿É¼ÇÀ» ¼³¸í ÇÏ °í DLLÀÇ À̸§À» º¯°æ ÇÏ´Â ³í¸®¸¦ Æ÷ÇÔ ÇÕ´Ï´Ù. ÀÌ ±ÔÄ¢Àº MFC/OLE, µ¥ÀÌÅͺ£À̽º ¹× ³×Æ®¿öÅ© MFCOLE¿¡ ÀÇÇØ ¸¸µé¾îÁø ÇÏ´Â Dll¿¡µµ Àû¿ë µË´Ï´Ù.MAK, MFCDBÀÔ´Ï´Ù.MAK, ±×¸®°í MFCNETÀÔ´Ï´Ù.MAK, °¢°¢. ÀÌÈÄ ÀÌ·¯ÇÑ DllÀº ÀáÀçÀûÀ¸·Î ¸¹Àº MFC ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼­ °øÀ¯ ÆÄÀÏÀÇ À̸§À» º¯°æ ÇÏ´Â °ÍÀº ÇÊ¿äÀÔ´Ï´Ù. »ç¿ëÀÚ ÁöÁ¤ ¹öÀüÀÇ MFC DllÀ» °®´Â ´ëü ±× ½Ã½ºÅÛ¿¡ ¼³Ä¡ µÇ¾î °øÀ¯ MFC DllÀ» »ç¿ë ÇÏ´Â ´Ù¸¥ MFC ÀÀ¿ë ÇÁ·Î±×·¥ Áß´Ü µÉ ¼ö ÀÖ½À´Ï´Ù.

MFC DllÀ» ´Ù½Ã ±ÇÀå µÇÁö ¾Ê½À´Ï´Ù.

MFCxx.DLL ±¸Çö ¹æ¹ý

´ÙÀ½ ´Ü¿ø¿¡¼­´Â MFC DLL (MFCxx.DLL ¹× MFCxxD.DLL) ±¸Çö ÇÏ´Â ¹æ¹ýÀ» ¼³¸í ÇÕ´Ï´Ù. ¿©±â¿¡ ¼¼ºÎ »çÇ×ÀÌ ÀÌÇØ ÇÒ ¸ðµç Áß¿äÀº MFC DLLÀ» »ç¿ë ÇÏ ¿© ÀÀ¿ë ÇÁ·Î±×·¥ÀÔ´Ï´Ù. ¿©±â¿¡ ³»¿ëÀ» MFC È®Àå DLLÀ» ÀÛ¼º ÇÏ´Â ¹æ¹ýÀ» ÀÌÇØ ÇÏ´Â µ¥ ÇʼöÀûÀÔ´Ï´Ù. ÇÏÁö¸¸,ÀÌ ±¸Çö ÀÌÇØ ÀÚ½ÅÀÇ DLLÀ» ÀÛ¼º ÇÏ´Â µ¥ µµ¿òÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù.

±¸Çö °³¿ä

À§¿¡¼­ ¼³¸íÇÑ ´ë·Î MFC DLLÀº MFC È®Àå DLLÀÇ Æ¯º° ÇÑ °æ¿ì Á¤¸». ±×°ÍÀº ¸Å¿ì ¸¹Àº ¸¹Àº Ŭ·¡½º¿¡ ´ë ÇÑ ¼öÃâ. °¡Áö ¸î °¡Áö Ãß°¡ MFC DLL¿¡¼­ Á¤±Ô È®Àå DLL º¸´Ù ´õ¿í Ưº° ÇÏ °Ô¡£

Win32´Â ´ëºÎºÐÀÇ ÀÛ¾÷

16 ºñÆ® ¹öÀüÀÇ MFC ÀÀ¿ë ÇÁ·Î±×·¥ ´ç µ¥ÀÌÅÍ ½ºÅà ¼¼±×¸ÕÆ®¿¡ ÀϺΠ80 x 86 ¾î¼Àºí¸® ÄÚµå, ÇÁ·Î¼¼½º ´ç ¿¹¿Ü ÄÁÅØ½ºÆ® ¹× ±âŸ ±â¼ú¿¡ ÀÇÇØ ¸¸µé¾îÁø Ưº° ÇÑ ¼¼±×¸ÕÆ®¸¦ Æ÷ÇÔ ÇÑ Æ¯º° ÇÑ ±â¼ú ¼ö°¡ ÇÊ¿ä ÇÕ´Ï´Ù. Win32 Á÷Á¢ Áö¿ø ÇÁ·Î¼¼½º ´ç µ¥ÀÌÅÍ DLL¿¡´Â ´ç½ÅÀÌ ¿øÇÏ´Â ´ëºÎºÐÀÇ ½Ã°£. °¡Àå ºÎºÐ¿¡ ´ë ÇÑ MFCxx.DLL ´ÜÁö NAFXCWÀÔ´Ï´Ù.LIB´Â DLL¿¡ ÆÐŰÁö ÇÕ´Ï´Ù. MFC ¼Ò½º Äڵ带 º¸¸é µÉ Çʿ䰡 ¸Å¿ì ¸î °¡Áö Ưº° ÇÑ °æ¿ì À̱â _AFXDLL, # ifdef ¸Å¿ì ¸î °¡Áö¸¦ ãÀ» °Å ¾ß. Win32 Windows 3.1 (Win32s ¶ó°íµµ ÇÔ)¸¦ ÇØ°á ÇÏ´Â ±¸Ã¼ÀûÀ¸·Î Çϴ Ưº° ÇÑ °æ¿ì. Win32s MFC DLL ½º·¹µå ·ÎÄà ÀúÀå¼Ò (TLS) ÇÁ·Î¼¼½º ·ÎÄà µ¥ÀÌÅ͸¦ ¾ò±â À§ÇØ Win32 Api »ç¿ë ÇØ¾ß ÇÕ´Ï´Ù ±×·¡¼­ Á÷Á¢ Áö¿ø ÇÁ·Î¼¼½º ´ç DLL µ¥ÀÌÅ͸¦ ÇÏÁö ¾Ê½À´Ï´Ù.

¶óÀ̺귯¸® ¼Ò½º, Ãß°¡ ÆÄÀÏ¿¡ ´ë ÇÑ ¿µÇâ

ÀÏ¹Ý MFC Ŭ·¡½º ¶óÀ̺귯¸® ¼Ò½º ¹× Çì´õ¿¡¼­ _AFXDLL ¹öÀüÀÇ ¿µÇâÀ» »ó´ëÀûÀ¸·Î »ç¼ÒÇÑÀÔ´Ï´Ù. °Å±â¿¡ Ưº° ÇÑ ¹öÀü ÆÄÀÏ (AFXV_DLL.H) »Ó¸¸ ¾Æ´Ï¶ó Ãß°¡ Çì´õ ÆÄÀÏ (AFXDLL_.H) ÁÖ¿ä AFXWIN Æ÷ÇÔ µÇ¾î ÀÖ½À´Ï´Ù.H Çì´õÀÔ´Ï´Ù. AFXDLL_ÀÔ´Ï´Ù.H Çì´õ¿¡´Â CDynLinkLibrary Ŭ·¡½º ¹× ±âŸ ±¸Çö ¼¼ºÎ _AFXDLL ÀÀ¿ë ÇÁ·Î±×·¥ ¹× MFC È®Àå DllÀÇ Æ÷ÇÔ µË´Ï´Ù. AFXDLLXÀÔ´Ï´Ù.MFC È®Àå Dll (ÀÚ¼¼ÇÑ ³»¿ëÀº À§ÀÇ ÂüÁ¶) ±¸ÃàÀ» À§ÇÑ H Çì´õ¸¦ Á¦°ø Çϴ¡£

MFC SRC¿¡¼­ MFC ¶óÀ̺귯¸®¸¦ Á¤±Ô ¼Ò½º _AFXDLL # ifdef ¾Æ·¡ Ãß°¡ Á¶°ÇºÎ ÄÚµå ¸î °¡Áö ÀÖ´Ù. Ãß°¡ ¼Ò½º ÆÄÀÏ (DLLINIT.CPP) Ãß°¡ DLL ÃʱâÈ­ ÄÚµå ¹× MFCÀÇ °øÀ¯ ¹öÀüÀ» À§ÇØ ´Ù¸¥ Á¢ÂøÁ¦¸¦ Æ÷ÇÔÇÕ´Ï´Ù.

MFCÀÇ °øÀ¯ ¹öÀüÀ» ±¸Ãà Çϱâ À§Çؼ­´Â Ãß°¡ ÆÄÀÏÀÌ Á¦°ø µË´Ï´Ù. (¾Æ·¡ ÂüÁ¶ DLLÀ» ÀÛ¼º ÇÏ´Â ¹æ¹ý¿¡ ´ë ÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº.)

MFC DLL ºôµå

MFC DLLÀº ÀǵµÀûÀ¸·Î ¾î·Á¿î, ±×·¡¼­ µÎ ¹ø »ý°¢ Àç°Ç (¶Ç´Â 3 ¹ø) ±×°ÍÀ» Çϱâ Àü¿¡. MFC DLLÀ» ´Ù½Ã ÀÛ¼º ÇØ¾ß, ´ç½ÅÀº ¸¸¾à ´ç½ÅÀÌ ÀÌÇØ ÀáÀç·Â Æ÷Àå ¹®Á¦ ¹× ¾Æ·¡¿¡¼­ ¼³¸í ÇÏ´Â Àç¹èÆ÷ Á¦ÇÑ ¿©ÀüÈ÷ Á¤¸»¡£

MFCDLLÀÔ´Ï´Ù.MAK ÆÄÀÏ CodeView Á¤º¸¿Í µð¹ö±× DLLÀ» ±¸ÃàÇÒ ¿¹Á¤ ÀÌ´Ù:

NMAKE /f mfcdll.mak DEBUG = 1 LIBNAME MYMFC =

MFCDLLÀÔ´Ï´Ù.MAK ÆÄÀÏ CodeView Á¤º¸ ¾øÀÌ ¸±¸®½º DLLÀ» ±¸ÃàÇÒ ¿¹Á¤ ÀÌ´Ù:

NMAKE /f mfcdll.mak DEBUG = 0 LIBNAME MYMFC =

(¸¶Âù°¡Áö·Î, ´ç½ÅÀº MFCOLE »ç¿ëÇÕ´Ï´Ù.MAK, MFCDBÀÔ´Ï´Ù.MAK, ±×¸®°í MFCNETÀÔ´Ï´Ù.MAK MFCOxxD.DLL, MFCDxxD.DLL ¹× MFCNxxD.DLL-MFC/OLE, µ¥ÀÌÅͺ£À̽º ¹× ³×Æ®¿öÅ© Ŭ·¡½º¸¦ Æ÷ÇÔ ÇÏ´Â Dll ºôµå)

ÀÌ Ç¥ÁØ MFCxx.DLL ¹× MFCxxD.DLL À̸§ °¡Áø MFC SRC µð·ºÅ͸®¿¡¼­ MFC DLLÀÇ °³ÀÎ ¹öÀüÀ» ±¸ÃàÇÒ ¿¹Á¤ ÀÌ´Ù. »õ DllÀ» »ç¿ë ÇÏ ¿© °æ·Î¿¡ ÀûÀý ÇÑ À§Ä¡¿¡ º¹»ç ÇØ¾ß ÇÕ´Ï´Ù. MFCDLLÀÔ´Ï´Ù.MAK ¸ÞÀÌÅ©ÆÄÀÏ ¶ÇÇÑ °¡Á®¿À±â ¶óÀ̺귯¸® (MFCxx.LIB ¹× MFCxxD.LIB)¸¦ ´Ù½Ã ÀÛ¼º ÇÏ °í Ç¥ÁØ MFC LIB µð·ºÅ͸®¿¡ ¹èÄ¡ ÇÕ´Ï´Ù. ÀÌ ±×·¡¼­ ¹Ì¸® MFCxx.LIB ¹× MFCxxD.LIB ¶óÀ̺귯¸®¸¦ ´ëü ÇÏ´Â °Ô µË´Ï´Ù Á¶½É ÇϽʽÿÀ¡£

¼öÁ¤µÈ ¹öÀüÀÇ MFC DLL ¶óÀ̺귯¸®¸¦ Àç¹èÆ÷ ÇϰíÀÚ ÇÏ´Â °æ¿ì´Â MFCDLL¿¡ ÀÖ´Â DLLÀÇ À̸§À» º¯°æ ÇØ¾ß ÇÕ´Ï´Ù.MAK ¸ÞÀÌÅ©ÆÄÀÏ ¹× µÎÀÔ´Ï´Ù.DEF ÆÄÀÏÀÔ´Ï´Ù. ¸ÞÀÌÅ©ÆÄÀÏ MFCDLL¸¦ ÂüÁ¶ ÇϽʽÿÀ.MAK¿¡ ´ë ÇÑ ÀÚ¼¼ÇÑ Á¤º¸¡£

¶óÀ̺귯¸®¸¦ ¼öÁ¤ ÇÏ °í´Â ¼Ò¸Å¸¦ Àç¹èÆ÷ÇÒ ¼ö ÀÖ½À´Ï´Ù (/ ¸±¸®½º) MFCxx.DLL ÀÌ¿ÜÀÇ ´Ù¸¥ À̸§À» º¯°æ ÇÏ´Â °æ¿ì¿¡ ¼öÁ¤ ¶óÀ̺귯¸®. ³»Àå ¶Ç´Â »ç¿ëÀÚ ÁöÁ¤ ±¸ÃàµÈ µð¹ö±× DLLÀÇ µð¹ö±× ¹öÀü Àç¹èÆ÷ ÇÏÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù.

ÀÌ·¯ÇÑ Àç¹èÆ÷ Á¦ÇÑÀº ÁÖ·Î ºñÇ¥ÁØÀÇ È®»êÀ» ¹æÁö ÇÏ´Â ÀáÀçÀûÀ¸·Î ¹ÙÀÌ·¯½º¸¦ Æ÷ÇÔ ÇÏ´Â Dll. ÀÌ»óÀûÀ¸·Î ´ç½ÅÀÌ Çʿ䰡 ¾ø½À´Ï´Ù DllÀ» ´Ù½Ã ÀÛ¼º ÇÏ °í ÀڽŰú ±ÍÇÏÀÇ »ç¿ëÀÚ¿¡ ´ë ÇÑ ¸¹Àº ¹®Á¦¸¦ ÇÇÇÒ °Í ÀÌ´Ù ¹Ì¸® MFCxx.DLL Visual c + + Á¦Ç°°ú ÇÔ²² Á¦°ø µÈ ÀÀ¿ë ÇÁ·Î±×·¥À» Àç¹èÆ÷ ÇÏ´Â °æ¿ì¡£

¸Þ¸ð¸® °ü¸®

Mfcxx.dllÀ» »ç¿ë ÇÏ ¿© ÀÀ¿ë ÇÁ·Î±×·¥ MSVCRTxx.DLL, °øÀ¯ C ·±Å¸ÀÓ DLL¿¡¼­ Á¦°ø ÇÏ´Â ÀϹÝÀûÀÎ ¸Þ¸ð¸® ÇÒ´çÀÚ¸¦ »ç¿ë ÇÕ´Ï´Ù. ¸ðµÎ ÀÀ¿ë ÇÁ·Î±×·¥, ¸ðµç È®Àå Dll·Î ½º½º·Î MFC DllÀÌ °øÀ¯ ¸Þ¸ð¸® ÇÒ´çÀÚ¸¦ »ç¿ëÇÕ´Ï´Ù. »ç¿ë ÇÏ ¿© ¸Þ¸ð¸® ÇÒ´ç¿¡ ´ë ÇÑ °øÀ¯ DLL, MFC Dll ÀÀ¿ë ÇÁ·Î±×·¥ ¶Ç´Â ¹Ý´ë·Î ÇØÁ¦ ³ªÁß¿¡ ¸Þ¸ð¸®¸¦ ÇÒ´çÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÀ¿ë ÇÁ·Î±×·¥°ú DLL °°Àº ÇÒ´çÀÚ¸¦ »ç¿ë ÇØ¾ß Çϱ⠶§¹®¿¡ c + + Àü¿ª new ¿¬»êÀÚ ¶Ç´Â ¿¬»êÀÚ »èÁ¦ÇÏÁö ÀçÁ¤ÀÇ ÇØ¾ß ÇÕ´Ï´Ù. µ¿ÀÏÇÑ ±ÔÄ¢ (malloc, realloc, ¹«·á, µîµî.)¿Í °°Àº C ·±Å¸ÀÓ ¸Þ¸ð¸® ÇÒ´ç ·çÆ¾ÀÇ ³ª¸ÓÁö ºÎºÐ¿¡ Àû¿ë¡£

DLL À̸§, ¼­ ¼ö ¹× Ŭ·¡½º __declspec (dllexport)

¿ì¸®´Â »ç¿ë ÇÏÁö ¾Ê½À´Ï´Ù¸¦ class c + + ÄÄÆÄÀÏ·¯ÀÇ __declspec (dllexport) ±â´É. ´ë½Å, ¼öÃâÀÇ ¸ñ·Ï (MFCxx.DEF ¹× MFCxxD.DEF) Ŭ·¡½º ¶óÀ̺귯¸® ¼Ò½º¿Í ÇÔ²² Æ÷ÇÔ µË´Ï´Ù. ÀÌ·¯ÇÑ ÁøÀÔÁ¡ (ÇÔ¼ö ¹× µ¥ÀÌÅÍ)ÀÇ ÁýÇÕÀº ¼±Åà ³»º¸³»Áý´Ï´Ù. MFC °³ÀÎ ±¸Çö ÇÔ¼ö ¶Ç´Â Ŭ·¡½º¿Í °°Àº ´Ù¸¥ ±âÈ£¸¦ ³»º¸³»Áö ¾Ê½À´Ï´Ù ¸ðµç ¼öÃâ ¼­ °ÅÁÖ ¶Ç´Â ºñ-»óÁÖ À̸§ Å×À̺íÀÇ ¹®ÀÚ¿­ À̸§ ¾øÀÌ ÀÇÇØ ¼öÇà µË´Ï´Ù ¡£

»ç¿ë ÇÏ ¿© class __declspec (dllexport) ÀÛÀº DllÀ» ±¸Ãà Çϱâ À§ÇÑ ´ë¾È µÉ ¼ö ÀÖ½À´Ï´Ù ÇÏÁö¸¸ MFC¿Í °°Àº Å« DLLÀÇ °æ¿ì ±âº» ³»º¸³»±â ¸ÞÄ¿´ÏÁò È¿À²¼º°ú ¿ë·® Á¦ÇÑ ¡£

ÀÌ ¸ðµç ¼ö´Ü À̶õ ¿ì¸®°¡ ¸¹Àº ¾çÀÇ ¾à 800 (kbyte ´ÜÀ§) ¸¹Àº ½ÇÇà ŸÇù ¾øÀÌ ·Îµù ¼ÓµµÀº MFCxx.DLL ¸±¸®½º¿¡¼­ ±â´ÉÀ» Æ÷ÀåÇÒ ¼ö ÀÖ´Ù. MFCxx.DLL µÆÀ» 100 K Å«ÀÌ ±â¹ýÀÌ µÇÁö »ç¿ë ÇÕ´Ï´Ù.¶ÇÇÑ ÀÌ·¸°Ô ±×°ÍÀÇ ³¡¿¡ Ãß°¡ ¿£Æ®¸® Æ÷ÀÎÆ®¸¦ Ãß°¡ÇÒ ¼ö´Â ÀÖ½À´Ï´Ù.DEF ÆÄÀÏÀ» ¼­ ¼ö·Î ³»º¸³»±âÀÇ ¼Óµµ ¹× Å©±â È¿À²¼ºÀ» ŸÇù ÇÏÁö ¾Ê°í ´Ü¼ø ¹öÀü °ü¸®¸¦ Çã¿ë ÇÕ´Ï´Ù. MFC Ŭ·¡½º ¶óÀ̺귯¸®¿¡¼­ ÁÖ ¹öÀü °³Á¤ ¶óÀ̺귯¸® À̸§ÀÌ º¯°æ µË´Ï´Ù. Áï, MFC30.DLL¿¡´Â MFC Ŭ·¡½º ¶óÀ̺귯¸®ÀÇ ¹öÀü 3.0À» Æ÷ÇÔ ÇÏ´Â Àç¹èÆ÷ °¡´É DLLÀÔ´Ï´Ù. ÀÌ DLLÀÇ ¾÷±×·¹ÀÌµå ¸», °¡»ó MFC 3.1 DLL MFC31 ¶ó´Â °Í ÀÌ´Ù.DLL ´ë½Å. ´Ù½Ã ¸»ÇÏÁö¸¸, MFC DLLÀÇ »ç¿ëÀÚ Á¤ÀÇ ¹öÀüÀ» »ý»ê ÇÏ´Â MFC ¼Ò½º Äڵ带 ¼öÁ¤ ÇÏ´Â °æ¿ì »ç¿ë ÇϽʽÿÀ ´Ù¸¥ À̸§ (¹× ¼±È£ Çϳª "MFC" ¾øÀÌ) À̸§¡£

±â¼ú ³ëÆ® ¹øÈ£·Î |nbsp; Ä«Å×°í¸®º° ±â¼ú ³ëÆ®(&N)

Index