TN011: MFC¸¦ »ç¿ë ÇÏ ¿© DLLÀÇ ÀÏȯÀ¸·Î

ÀÌ ³ëÆ® 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)

Index