ÀÌ ³ëÆ® Windows µ¿Àû ¿¬°á ¶óÀ̺귯¸® (DLL)ÀÇ ÀϺηΠMFC ¶óÀ̺귯¸®¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Â ±âº» Dll¿¡ ¼³¸í ÇÕ´Ï´Ù. ±×°ÍÀº ±×µéÀ» ±¸Ãà ÇÏ´Â ¹æ¹ý°ú Windows Dll¿¡ Àͼ÷ÇÑ °¡Á¤ ÇÕ´Ï´Ù. MFC È®Àå Dll MFC ¶óÀ̺귯¸®¿¡ ´ë ÇÑ È®ÀåÀ» ¸¸µé ¼ö¿¡ ´ë ÇÑ ÀÚ¼¼ÇÑ MFCÀÇ DLL ¹öÀüÀ» ÂüÁ¶ ÇϽʽÿÀ.
DLL ÀÎÅÍÆäÀ̽º
±âº» DllÀº ÀÀ¿ë ÇÁ·Î±×·¥°ú DLL »çÀÌÀÇ ÀÎÅÍÆäÀ̽º Á¤»óÀûÀÎ C¿Í °°Àº ÇÔ¼ö¸¦ »ç¿ë Çϰųª ¸í½ÃÀûÀ¸·Î ³»º¸³½µÈ Ŭ·¡½º¿¡ ÁöÁ¤ µÈ °¡Á¤ ÇÕ´Ï´Ù. MFC Ŭ·¡½º ÀÎÅÍÆäÀ̽º¸¦ ³»º¸³¾ ¼ö ¾ø½À´Ï´Ù.
DLL ¹× ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼ MFC¸¦ »ç¿ë ÇÏ·Á´Â °æ¿ì µÑ ´Ù ¼±ÅÃÇÒ ¼ö MFC ¶óÀ̺귯¸®ÀÇ °øÀ¯ ¹öÀüÀ» »ç¿ë Çϰųª ±×µé¿¡ Á¤ÀûÀ¸·Î ¸µÅ© µÈ MFC ¶óÀ̺귯¸®ÀÇ º¹»çº»À»°¡Áö°í ÀÖ´Ù. Visual c + + 4.0 ÀÌÀü ¹öÀüÀÇ MFC Á¤Àû ¸µÅ© ¶óÀ̺귯¸® Dll¿¡ ´ë ÇÑ ÀÀ¿ë ÇÁ·Î±×·¥ ´Þ¶ú´Ù. ÇöÀç ¹öÀüÀÇ MFC, ÀÀ¿ë ÇÁ·Î±×·¥ ¹× DLL µÑ ´Ù »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù MFC ¶óÀ̺귯¸® Ç¥ÁØ ¹öÀü Áß Çϳª. °Å±â¿¡ ¾ø½À´Ï´Ù (MFC ·±Å¸ÀÓ ½Ã ¼±Åà ÇÏ °Ô)ÀÌÀÌ ¹öÀüÀÇ Dll¿¡ ´ë ÇÑ º°µµ ¶óÀ̺귯¸®¡£
ÀÏ¹Ý Dll ¿©·¯ ÀåÁ¡À»:
API Á¦ÇÑ
ÀϺΠMFC ±â´ÉÀÌ ±â¼úÀû ÇÑ°è Áß ¶§¹®¿¡ DLL ¹öÀü¿¡ Àû¿ë µÇÁö ¾Ê½À´Ï´Ù ¶Ç´Â ¶§¹®¿¡ ÀÌ·¯ÇÑ ¼ºñ½º´Â ÀϹÝÀûÀ¸·Î ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼ Á¦°ø µË´Ï´Ù. ÀÌ·¯ÇÑ Á¦ÇÑÀº ´ÙÀ½°ú °°½À´Ï´Ù.:
DLL ºôµå
Á¤ÀûÀ¸·Î MFC¿¡ ¸µÅ© ÇÏ´Â ±âº» DllÀ» ÄÄÆÄÀÏÇÒ ¶§ ±âÈ£ "_USRDLL" ¹× "_WINDLL"¸¦ Á¤ÀÇ ÇØ¾ß ÇÕ´Ï´Ù. ´ÙÀ½ ÄÄÆÄÀÏ·¯ ½ºÀ§Ä¡¿Í ÇÔ²² DLL Äڵ带 ÄÄÆÄÀÏÇÒ ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù.:
µ¿ÀûÀ¸·Î MFC¿¡ ¸µÅ© ÇÏ´Â ±âº» DllÀ» ÄÄÆÄÀÏÇÒ ¶§ À§ÀÇ ±âÈ£¸¦ Á¤ÀÇ ÇÏ °í À§ÀÇ ÄÄÆÄÀÏ·¯ ½ºÀ§Ä¡¸¦ »ç¿ë ÇØ¾ß ÇÕ´Ï´Ù. Additonally, "_AFXDLL" ±âÈ£¸¦ Á¤ÀÇ ÇØ¾ß ÇÕ´Ï´Ù ¹× DLL ÄÚµå¿Í ÄÄÆÄÀÏ ÇØ¾ß ÇÕ´Ï´Ù:
ÀÀ¿ë ÇÁ·Î±×·¥°ú DLL »çÀÌÀÇ ÀÎÅÍÆäÀ̽º (Api)¸¦ ¸í½ÃÀûÀ¸·Î ³»º¸³»¾ß ÇÕ´Ï´Ù. °¡´ÉÇÑ C ÀÎÅÍÆäÀ̽º¿¡ ÁýÂø ³·Àº ´ë¿ªÆøÀ» ±ÍÇÏÀÇ ÀÎÅÍÆäÀ̽º Á¤ÀÇ ÇÏ´Â °ÍÀÌ ÁÁ½À´Ï´Ù. ´õ Á÷Á¢ÀûÀÎ C ÀÎÅÍÆäÀ̽º´Â Á» ´õ º¹Àâ ÇÑ c + + Ŭ·¡½º º¸´Ù À¯Áö °ü¸® Çϱ⠽±½À´Ï´Ù.
C ¹× c + + ÆÄÀÏ (c + + ÇÁ·Î±×·¡¸Ó DLL °í°´À» Á¦ÇÑ ÇÏÁö ¾ÊÀ» ±×·± ½Ä)¿¡ ÀÇÇØ Æ÷ÇÔ µÉ ¼ö ÀÖ´Â º°µµ Çì´õ¿¡ ±ÍÇÏÀÇ Api¸¦ ³õ½À´Ï´Ù. Çì´õ TRACEAPI¸¦ ÂüÁ¶ ÇϽʽÿÀ.MFC °í±Þ °³³ä »ùÇà H DLLTRACE ¿¹. ÇÔ¼ö¸¦ ³»º¸³»·Á¸é ¸ðµâ Á¤ÀÇ ÆÄÀÏÀÇ EXPORTS ¼½¼Ç¿¡ ÀÔ·Â (.DEF) ¶Ç´Â ÇÔ¼ö Á¤ÀÇ¿¡ __declspec (dllexport)À» Æ÷ÇÔ ÇÕ´Ï´Ù. __Declspec(dllimport) ¸¦ »ç¿ë ÇÏ ¿© Ŭ¶óÀ̾ðÆ® ½ÇÇà ÆÄÀÏ¿¡¼ ÀÌ·¯ÇÑ ÇÔ¼ö °¡Á®¿À±â¡£
µ¿ÀûÀ¸·Î MFC DLL¿¡ ´ë ÇÑ Çϳª¿¡ ÇöÀç ¸ðµâ »óŸ¦ ¼³Á¤ ÇÏ·Á¸é ¿¬°áÇÒ ÀÏ¹Ý Dll¿¡¼ ³»º¸³½µÈ ÇÔ¼ö¸¦ ¸ðµÎ óÀ½¿¡ AFX_MANAGE_STATE ¸ÅÅ©·Î Ãß°¡ ÇØ¾ß ÇÕ´Ï´Ù. ÀÌ DLL¿¡¼ ³»º¸³½ ÇÔ¼öÀÇ ½ÃÀÛ ºÎºÐ¿¡ ´ÙÀ½ ÄÚµå ÁÙÀ» Ãß°¡ ÇÏ ¿© ÀÌ·ç¾îÁý´Ï´Ù.:
nbsp; & nbsp;
AFX_MANAGE_STATE (AfxGetStaticModuleState ())
nbsp; & nbsp;
WinMain gt; DllMain(&G)
MFC ¶óÀ̺귯¸®´Â Ç¥ÁØ Win32 DllMain ÁøÀÔÁ¡ Á¤ÀÇ ÀÏ¹Ý MFC ÀÀ¿ë ÇÁ·Î±×·¥ ¿¡¼Ã³·³¿¡¼ CWinApp ÆÄ»ýµÈ °³Ã¼¸¦ ÃʱâÈ ÇÏ´Â. ÀÏ¹Ý MFC ÀÀ¿ë ÇÁ·Î±×·¥ ¿¡¼Ã³·³¿¡¼ InitInstance ¸â¹ö ÇÔ¼ö¿¡¼ ¸ðµç DLL ƯÁ¤ Ãʱâȸ¦ ¹èÄ¡¡£
Âü°í CWinApp::Run ¸ÞÄ¿´ÏÁò ¶§¹®¿¡ ÁÖ¿ä ¸Þ½ÃÁö ÆßÇÁ¸¦ ¼ÒÀ¯ ÇÏ´Â ÀÀ¿ë ÇÁ·Î±×·¥ DLL¿¡ Àû¿ë µÇÁö ¾Ê½À´Ï´Ù. DLL ÀÔ ¸ð´ú¸®½º ´ëÈ »óÀÚ µÇ¾ú°Å³ª ÀÚüÀÇ ÁÖ ÇÁ·¹ÀÓ Ã¢, ÀÀ¿ë ÇÁ·Î±×·¥ÀÇ ±âº» ¸Þ½ÃÁö ÆßÇÁ CWinApp::PreTranslateMessage ¸¦ È£Ãâ ÇÏ´Â DLL ³»º¸³½ ·çƾÀ» È£Ãâ ÇØ¾ß ÇÕ´Ï´Ù.
ÀÌ ÇÔ¼ö´Â »ç¿ë Çϱâ À§ÇØ DLLTRACE »ùÇÃÀ» ÂüÁ¶ ÇϽʽÿÀ¡£
DLL ¾ð·ÎµåµÇ±â Àü¿¡ DllMain ÇÔ¼ö¸¦ Á¦°ø ÇÏ´Â ±ÍÇÏÀÇ CWinApp ÆÄ»ýµÈ Ŭ·¡½º¸¦ MFC¿¡¼ È£Ãâ µÉ ExitInstance ¸â¹ö ÇÔ¼ö¡£
¸ðµÎ ÇÔ²² ¿¬°á ÇÏ´Â ÇÒ °Í ÀÌ´Ù ¹«¾ù
Á¤ÀûÀ¸·Î MFC¿¡ ¸µÅ© ÇÏ´Â ±âº» Dll°ú ¶óÀ̺귯¸® (NAFXCWDÀÌ DLLÀ» ¿¬°á ÇØ¾ß ÇÕ´Ï´Ù.LIB ¶Ç´Â NAFXCWÀÔ´Ï´Ù.LIB) ¶ó°í ÇÏ´Â C ·±Å¸ÀÓ ¹öÀü°ú ÇÔ²² ' LIBCMT.LIB'. ÀÌ·¯ÇÑ ¶óÀ̺귯¸®´Â ÀÌ¹Ì ¸¸µé¾îÁø ¹× Visual c + + ¼³Ä¡ ÇÁ·Î±×·¥À» ½ÇÇà ÇÏ´Â °æ¿ì ÁöÁ¤ ÇÏ ¿© ¼³Ä¡ÇÒ ¼ö ÀÖ½À´Ï´Ù.
»ùÇà ÄÚµå
MFC °í±Þ °³³ä »ùÇà ÇÁ·Î±×·¥À» ÂüÁ¶ ÇϽʽÿÀ DLLTRACE Àüü »ùÇÿ¡ ´ë ÇÑ. À̶§ À̶ó´Â °£´ÜÇÑ DLL ' ÃßÀû ÇÁ·Î±×·¥.DLL' ±× ±¸Çö AFX ÃßÀû Ç÷¡±× ´ëÈ ( ±â¼ú ³ëÆ® 7ÂüÁ¶). ¶ÇÇÑÀÌ ´ëÈ »óÀÚ¸¦ »ç¿ë ÇÏ ¿© DLLÀ» È£Ãâ ÇÏ´Â °£´ÜÇÑ HELLO ÀÀ¿ë ÇÁ·Î±×·¥ÀÌ ÀÖ´Ù¡£
Âü°í·Î ¸î °¡Áö Àç¹Ì ÀÖ´Â °ÍÀº:
TRACEAPI¿¡¼ ´ÙÀ½ ÃßÃâ ÇÕ´Ï´Ù.H´Â Á¤ÀûÀ¸·Î MFC¿¡ ¸µÅ© ÇÏ´Â ±âº» DLL¿¡ Á¤ÀÇ µÈ ÇϳªÀÇ API¿¡ ÇÊ¿äÇѸ¦ º¸¿© ÁÝ´Ï´Ù.:
# ifdef __cplusplus
extern "C" {
#endifnbsp; / * __cplusplus * /
TracerData ±¸Á¶Ã¼
{
?? BOOL bEnabled;
?? UINT Ç÷¡±×;
};
BOOL±îÁö ÆĽºÄ® ³»º¸³»±â PromptTraceFlags (Tracerdata±îÁö * lpData);
# ifdef __cplusplus
}
# endif(&N)
ÀÌ ¿¹Á¦¿¡¼´Â ¼±¾ð c + + »ç¿ëÀÚ¸¦ À§ÇÑ 'extern "C" {}' ºí·Ï¿¡ ¹¿© ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÏ¸é ´ÙÀ½°ú °°Àº ¿©·¯ °¡Áö ÀåÁ¡ÀÌ ÀÖ½À´Ï´Ù. ù°, ±×°ÍÀº DLL Api »ç¿ëÇÒ ¼ö ºñ c + + Ŭ¶óÀ̾ðÆ® ÀÀ¿ë ÇÁ·Î±×·¥¿¡¼. µÑ°, c + + À̸§ ¸Í±Û¸µ Àû¿ë µÇÁö °ÍÀÔ´Ï´Ù ³»º¸³½µÈ À̸§¿¡ ÀÖÀ¸¹Ç·Î DLL ¿À¹ö Çìµå°¡ ÁÙ¾îµì´Ï´Ù. ¸¶Áö¸·À¸·Î, ±×°ÍÀº ½±°Ô¿¡ ¸í½ÃÀûÀ¸·Î Ãß°¡ ÇÏ´Â.DEF ÆÄÀÏ (¼ ¼ö·Î ³»º¸³»±â) À̸§ ¸Í±Û¸µ¿¡ ´ëÇØ °ÆÁ¤ÇÒ ÇÊ¿ä ¾øÀÌ¡£
¸ðµç API ÇÔ¼ö´Â "ÆĽºÄ® ¼öÃâ±îÁöÇÏ´Â °ÍÀ»". ºñ·Ï ÇÏÁö stricly Win32 Dll¿¡ ÇÊ¿äÇÑ, ÀÌ·¯ÇÑ Á¤ÀÇ º¸°ü µÇ¾ú½À´Ï´Ù ½±°Ô ´Ù½Ã ÀÌ½Ä ÇÏ´Â °Í¿¡ ´ë ÇÑ 16 ºñÆ® windows. Win32¿¡¼ ¾Æ¹«°Íµµ ¸ðµÎ ¸Ö¸®, ÆĽºÄ®¹× ³»º¸³»±â ¸ÅÅ©·Î È®Àå¡£
API¿¡¼ »ç¿ë µÇ´Â ±¸Á¶ MFC Ŭ·¡½º¿¡¼ ÆÄ»ý µÇÁö ¹× API Çì´õ¿¡ ¿ÏÀüÈ÷ Á¤ÀÇ µË´Ï´Ù. ÀÌ °í, ´Ù½Ã Çѹø Çϸé DLL »ç¿ëÇÒ ¼ö C ÇÁ·Î±×·¥ »Ó¸¸ ¾Æ´Ï¶ó DLL°ú ÀÀ¿ë ÇÁ·Î±×·¥ »çÀÌÀÇ ÀÎÅÍÆäÀ̽ºÀÇ º¹À⼺ °¨¼Ò¡£
API¿¡¼ »ç¿ë µÇ´Â ¸ðµç µ¥ÀÌÅÍ Æ÷ÀÎÅÍ´Â ¸í½ÃÀû ¸Ö¸® Æ÷ÀÎÅÍ. ´Ù½Ã ¸»ÇÏÁö¸¸, Áö±Ý±îÁö, Win32, Á¤¸» ÇÊ¿ä ÇÏÁö ¾Ê½À´Ï´Ù ÇÏÁö¸¸ ¾ðÁ¨°¡ ¹Ì·¡¿¡ 16 ºñÆ® Windows¿¡ ´ë ÇÑ Äڵ带 ÄÄÆÄÀÏÇÏ·Á¸é °èȹ ÇÏ´Â °æ¿ì À¯¿ë¡£
±â¼ú ³ëÆ® ¹øÈ£·Î |nbsp; Ä«Å×°í¸®º° ±â¼ú ³ëÆ®(&N)