ÓÑÇéÌáʾ£ºÈç¹û±¾ÍøÒ³´ò¿ªÌ«Âý»òÏÔʾ²»ÍêÕû£¬Çë³¢ÊÔÊó±êÓÒ¼ü¡°Ë¢Ð¡±±¾ÍøÒ³£¡
CÓïÑÔʵÀý½Ì³Ì(PDF¸ñʽ)-µÚ75²¿·Ö
¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿! Èç¹û±¾ÊéûÓÐÔĶÁÍ꣬ÏëÏ´μÌÐø½Ó×ÅÔĶÁ£¬¿ÉʹÓÃÉÏ·½ "Êղص½ÎÒµÄä¯ÀÀÆ÷" ¹¦ÄÜ ºÍ "¼ÓÈëÊéÇ©" ¹¦ÄÜ£¡
UseResource£¨£©³ÉÔ±º¯Êýͨ¹ý´ÓÐźÅÁ¿»ñµÃÒ»¸ö¼ÆÊýÆ÷À´·ÃÎÊ×ÊÔ´£¬¡¡
È»ºóµ±º¯ÊýÍ˳öʱÊÍ·ÅÐźÅÁ¿¡£¡¡¡¡
#include¡¡¡¨stdafx¡£h¡¨¡¡¡¡
#include¡¡¡¨SomeResource¡£h¡¨¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡658¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
CSomeResource£º£ºCSomeResource£¨£©¡¡¡¡
£û¡¡¡¡
semaphore¡¡=¡¡new¡¡CSemaphore£¨2£»¡¡2£©£»¡¡¡¡
£ý¡¡¡¡
CSomeResource£º£º~CSomeResource£¨£©¡¡¡¡
£û¡¡¡¡
delete¡¡semaphore£»¡¡¡¡
£ý¡¡¡¡
void¡¡CSomeResource£º£ºUseResource£¨£©¡¡¡¡
£û¡¡¡¡
CSingleLock¡¡singleLock£¨semaphore£©£»¡¡¡¡
singleLock¡£Lock£¨£©£»¡¡¡¡
Sleep£¨5000£©£»¡¡¡¡
£ý¡¡¡¡
°´ÕÕÏÂÃæµÄ²½ÖèÐÞ¸ÄÔÀ´µÄThread³ÌÐòÒÔ²âÊÔCSomeResource¶ÔÏ󡣡¡¡¡
1¡£¡¡É¾³ýCCountArrayÀàµÄÍ·ÎļþºÍÖ´ÐÐÎļþ¡£¡¡¡¡
2¡£¡¡´´½¨ÐµÄSomeResource¡£hºÍSomeResource¡£cpp¡£¡¡¡¡
3¡£¡¡ÔÚÐÂÌí¼ÓµÄÁ½¸öÎļþÖмÓÈë´úÂë¡£¡¡¡¡
4¡£¡¡ÓÃ#include¡¡¡¨SomeResource¡£h¡¨Óï¾ä»»µô¡¨CountArray2¡£h¡¨¡£¡¡¡¡
5¡£¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡ÓÃCSomeResource¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡someResource£»Ìæ»»CCountArray2¡¡¡¡
countArray¡£¡¡¡¡
6¡£¡¡ÓÃÏÂÃæÈý¸öº¯ÊýÌæ»»WriteThreadProc£¨£©ºÍReadThreadProc£¨£©¡£¡¡¡¡
UINT¡¡ThreadProc1£¨LPVOID¡¡param£©¡¡¡¡
£û¡¡¡¡
someResource¡£UseResource£¨£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡659¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
£º£ºMessageBox£¨£¨HWND£©param£»¡¨Thread¡¡1¡¡had¡¡access¡£¡¨£»¡¡¡¡¡¡
¡¨Thread¡¡1¡¨£»¡¡MB_OK£©£»¡¡¡¡
return¡¡0£»¡¡¡¡
£ý¡¡¡¡
UINT¡¡ThreadProc2£¨LPVOID¡¡param£©¡¡¡¡
£û¡¡¡¡
someResource¡£UseResource£¨£©£»¡¡¡¡
£º£ºMessageBox£¨£¨HWND£©param£»¡¨Thread¡¡2¡¡had¡¡access¡£¡¨£»¡¡¡¡
¡¨Thread¡¡2¡¨£»¡¡MB_OK£©£»¡¡¡¡
return¡¡0£»¡¡¡¡
£ý¡¡¡¡
UINT¡¡ThreadProc3£¨LPVOID¡¡param£©¡¡¡¡
£û¡¡¡¡
someResource¡£UseResource£¨£©£»¡¡¡¡
£º£ºMessageBox£¨£¨HWND£©param£»¡¡¡¡
¡¨Thread¡¡3¡¡had¡¡access¡£¡¨£»¡¡¡¨Thread¡¡3¡¨£»¡¡MB_OK£©£»¡¡¡¡
return¡¡0£»¡¡¡¡
£ý¡¡¡¡
7¡£¡¡Ê¹ÓÃÏÂÃæµÄÓï¾äÌæ»»OnStartthread£¨£©ÖÐËùÓеĴúÂë¡£¡¡¡¡
void¡¡CThreadView£º£ºOnStartthread£¨£©¡¡¡¡¡¡
£û¡¡¡¡
//¡¡TODO£º¡¡Add¡¡your¡¡mand¡¡handler¡¡code¡¡here¡¡¡¡
HWND¡¡hWnd¡¡=¡¡GetSafeHwnd£¨£©£»¡¡¡¡
AfxBeginThread£¨ThreadProc1£»¡¡hWnd£©£»¡¡¡¡
AfxBeginThread£¨ThreadProc2£»¡¡hWnd£©£»¡¡¡¡
AfxBeginThread£¨ThreadProc3£»¡¡hWnd£©£»¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡660¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
£ý¡¡¡¡
ÏÖÔÚ±àÒë²¢ÔËÐгÌÐò¡£µ±Ö÷´°¿Ú³öÏÖºó£¬Ñ¡Ôñ¡¡¡°Ï̡߳±Ö÷²Ëµ¥Öеġ¡
¡¡¡°Æô¶¯Ï̡߳±²Ëµ¥Ñ¡Ïî¡£¹ý5ÃëÖֺ󣬵¯³öÁ½¸öÏûÏ¢¿ò¸æËßÄãÏß³Ì1ºÍ¡¡
Ïß³Ì2ÓµÓзÃÎÊ×ÊÔ´µÄȨÏÞ¡£ÔÙ¹ý5ÃëÖÓ£¬µÚÈý¸öÏûÏ¢¿òµ¯³ö¸æËßÄãÏß¡¡
³Ì3Ò²ÓµÓÐÁË·ÃÎÊ×ÊÔ´µÄȨÏÞ¡£Ïß³Ì3Ö®ËùÒÔ5ÃëÖÓÒÔºó²Å³öÏÖ£¬Èçͼ¡¡
12¡£5Ëùʾ¡£ÒòΪÏß³Ì1ºÍÏß³Ì2Ê×ÏÈÕ¼ÓÐÁË×ÊÔ´µÄ¿ØÖÆȨ¡£ÐźÅÁ¿±»Éè¡¡
ÖóÉͬһʱ¿ÌÖ»ÄÜÓÐÁ½¸öÏ̷߳ÃÎÊ×ÊÔ´£¬ËùÒÔµÚÈý¸öÏ̱߳ØÐëµÈ´ýÖ±¡¡
µ½Ç°Á½¸öÏß³ÌÊͷŶÔÐźÅÁ¿µÄËùÓÐȨ¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Í¼12¡£¡¡5¡¡Ïß³Ì3ÓµÓзÃÎÊȨÏÞ¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡661¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡µÚÊ®ÈýÕ¡¡¶¯Ì¬Á´½Ó¿â¡¡¡¡
ÔÚWindowsÓ¦ÓóÌÐòÖÐʹÓö¯Ì¬Á´½Ó¿âÓкܶàµÄºÃ´¦¡£×îÖ÷ÒªµÄÒ»µã¡¡
˵ÊÇËü¿ÉÒÔʹµÃ¶à¸öÓ¦ÓóÌÐò¹²ÏíÒ»¶Î´úÂ룬´Ó¶ø¿ÉÒÔ´ó·ù¶ÈµÄ½µµÍ¡¡
Ó¦ÓóÌÐòµÄ×ÊÔ´¿ªÏú£¬Í¬Ê±ºÜËõСÁËÓ¦ÓóÌÐòµÄ×îÖÕÖ´ÐдúÂëµÄ´ó¡¡
С¡£´ËÍ⣬ͨ¹ýʹÓö¯Ì¬Á´½Ó¿â£¬ÎÒÃÇ¿ÉÒÔ°ÑһЩ³£¹æµÄÀý³Ì¶ÀÁ¢³ö¡¡
À´£¬ÓÐЧµÄ±ÜÃâÁ˲»±ØÒªµÄÖظ´¿ª·¢£¬²¢ÇÒ£¬ÓÉÓÚÓ¦ÓóÌÐòʹÓÃÁ˶¯¡¡
̬Á´½ÓµÄ·½Ê½£¬»¹¿ÉÒÔÔÚ²»ÐèÖØиÄдÉõÖÁ±àÒëÓ¦ÓóÌÐòµÄ»ù´¡Éϸü¡¡
ÐÂÓ¦ÓóÌÐòµÄijЩ×é¼þ¡£¡¡¡¡
±¾Õ½éÉÜVisual¡¡C£«£«¡¡5¡£0ÖеĶ¯Ì¬Á´½Ó¿âµÄ´´½¨ºÍʹÓá£ÕâЩÄÚÈÝ°ü¡¡
À¨¡¡¡¡
¡¡¡¡l¡¡ÎªÊ²Ã´ÒªÊ¹ÓÃDLL¡¡¡¡
¡¡¡¡l¡¡²»Í¬µÄDLLÀàÐÍÖ®¼äµÄÑ¡Ôñ¡¡¡¡
¡¡¡¡l¡¡ÔÚ³ÌÐòÖд´½¨ºÍʹÓÃDLL¡¡¡¡
¡¡¡¡l¡¡Ê¹ÓÃDLLÀ©Õ¹MFC¡¡¡¡
±¾ÕµÄÖصãÔÚ½²ÊöWin32¡¡¡¡¡¡DLLºÍ»ùÓÚMFCµÄ³£¹æDLL£¬¶ÔÓÚMFCÀ©Õ¹DLL¡¡
½ö¸øÁËÒ»¸öºÜ¼òµ¥µÄÀý×Ó£¬¸üÉîÈëµÄ×ÊÁÏÇë²ÎÔÄVisual¡¡¡¡C£«£«µÄÁª»úÎÄ¡¡
µµ¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡µÚÒ»½Ú¡¡¸ÅÊö¡¡¡¡
¶¯Ì¬Á´½Ó¿â¡¡£¨DLL£¬Dynamic¡Link¡¡¡¡¡¡Library£©Ò²ÊÇÒ»ÖÖ¿ÉÖ´ÐÐÎļþ£¬¡¡
Ö»²»¹ýËü²»ÄÜÏóÆÕͨµÄEXEÎļþÄÇÑù¿ÉÒÔÖ±½ÓÔËÐУ¬¶øÊÇÓÃÀ´ÎªÆäËü¡¡
¿ÉÖ´ÐÐÎļþ¡¡£¨°üÀ¨EXEÎļþºÍÆäËüDLL£©Ìṩ¹²Ïíº¯Êý¿â¡£Ê¹ÓÃDLLµÄ¡¡
Ó¦ÓóÌÐò¿ÉÒÔµ÷ÓÃDLLÖеĵ¼³öº¯Êý¡¡£¨imported¡¡¡¡function£©£¬²»¹ýÔÚ¡¡
Ó¦ÓóÌÐò±¾ÉíµÄÖ´ÐдúÂëÖв¢²»°üº¬ÕâЩº¯ÊýµÄÖ´ÐдúÂ룬ËüÃǾ¹ý¡¡
±àÒëºÍÁ´½ÓÖ®ºó£¬¶ÀÁ¢µÄ±£´æÔÚDLLÖС£ÕâÊÇÒ»Öֺ͹ýÈ¥³£Óõľ²Ì¬¡¡
Á´½Ó²»Í¬µÄ·½Ê½£¬Ê¹Óþ²Ì¬Á´½Ó¿â¡¡£¨static¡¡¡¡link¡¡¡¡library£©µÄÓ¦Óá¡
³ÌÐò´Óº¯Êý¿âµÃµ½ËùÒýÓõĺ¯ÊýµÄÖ´ÐдúÂ룬Ȼºó°ÑÖ´ÐдúÂë·Å½ø¡¡×Ô¡¡
ÉíµÄÖ´ÐÐÎļþÖУ¬ÕâÑù£¬Ó¦ÓóÌÐòÔÚÔËÐÐʱ¾Í¿ÉÒÔ²»ÔÙÐèÒª¾²Ì¬º¯Êý¡¡
¿âµÄÖ§³Ö¡£¶øʹÓÃDLLµÄÓ¦ÓóÌÐòÖ»°üÀ¨ÁËÓÃÓÚ´ÓDLLÖж¨Î»ËùÒýÓõġ¡
º¯ÊýµÄÐÅÏ¢£¬¶øûÓк¯Êý¾ßÌåʵÏÖ£¬ÒªµÈµ½³ÌÐòÔËÐÐʱ²Å´ÓDLLÖлñ¡¡
µÃº¯ÊýµÄʵÏÖ´úÂë¡£ÏÔÈ»£¬Ê¹ÓÃÁËDLLµÄÓ¦ÓóÌÐòÔÚÔËÐÐʱ±ØÐëÒªÓС¡
ÏàÓ¦µÄDLLµÄÖ§³Ö¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡662¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
DLLÔÚWindows±à³ÌÖеõ½Á˹㷺µÄÓ¦Óá£WindowsÓ¦ÓóÌÐòµÄ»ù´¡£º¡¡
Windows¡¡¡¡¡¡APIº¯ÊýÖеÄÏ൱²¿·Ö¾ÍÊÇÓÉÒ»×éDLLËùÌṩµÄ£¬ÕâЩDLL´Ó¡¡
°²×°WindowsÆð¾Í´æÔÚÓÚϵͳÖÐÁË¡£¾¡¹ÜÔÚÇ°ÃæµÄ¼¸ÕÂÖÐÎÒÃÇûÓÐÃ÷¡¡
È·µÄÌáµ½£¬µ«ÊÂʵÉÏÎÒÃÇÔç¾ÍÔÚʹÓÃDLL½øÐбà³ÌÁË£¬Ö»²»¹ý£¬Ëùʹ¡¡
ÓõÄDLL¶¼ÊÇÏֳɵģ¬²¢ÇÒËùÓе÷ÓÃDLLµÄ²Ù×÷¶¼ÓÉVisual¡¡¡¡C£«£«µÄ±àÒë¡¡
ºÍÁ´½Ó³ÌÐòÌæÎÒÃÇÍê³ÉÁË¡£¡¡¡¡
±¾Õ½«ÏêϸµÄ½éÉÜÈçºÎ´´½¨×Ô¼ºµÄDLLºÍÈçºÎʹÓÃ×Ô¼º´´½¨µÄDLL½øÐС¡
±à³Ì¡£¡¡¡¡
ΪʲôҪʹÓÃDLLÄØ£¿Õ⵱ȻÊÇÒòΪÓ봫ͳµÄ¾²Ì¬Á´¿âÏà±È£¬Ê¹ÓÃDLL¡¡
ÓÐןü¶àµÄÓÅÊÆ£º¡¡¡¡
¡¡l¡¡Ê¹ÓÃDLLÌṩÁËÒ»ÖÖ¹²ÏíÊý¾ÝºÍ´úÂëµÄ·½±ã;¾¶¡£²¢ÇÒ£¬ÓÉÓÚ¶à¸ö¡¡
¡¡¡¡Ó¦ÓóÌÐò¿ÉÒÔ¹²Ïíͬһ¸öDLLÖеĺ¯Êý£¬Òò´Ë£¬Ê¹ÓÃDLL¿ÉÒÔÏÔÖø¡¡
¡¡¡¡¡¡µÄ½ÚÊ¡´ÅÅ̿ռ䡣ÓÈÆä¶ÔÓÚWindowsÓ¦ÓóÌÐò£¬ÓкܶàµÄ²Ù×÷¶¼ÊÇ¡¡
¡¡¡¡¡¡¡°±ê×¼»¯¡±Á˵ģ¬Èç¹ûʹÓô«Í³µÄ¾²Ì¬Á´½Ó£¬Ã¿Ò»¸öÐèÒªÍê³ÉÕâ¡¡
¡¡¡¡Ð©²Ù×÷µÄÓ¦ÓóÌÐò¶¼±ØÐëÔÚ×Ô¼ºµÄÖ´ÐÐÎļþÖаüÀ¨ÏàͬµÄÖ´Ðдú¡¡
¡¡¡¡Â룬Õâ²»µ«Ê¹µ¥¸öµÄÓ¦ÓóÌÐò±äµÃ¸ü³¤£¬Ò²ÀË·ÑÁË´ÅÅ̿ռ䡣¡¡¡¡
¡¡l¡¡ÓÉÓÚÏàͬµÄÔÒò£¬¶à¸öÓ¦ÓóÌÐò»¹¿ÉÒÔͬʱ¹²ÏíDLLÔÚÄÚ´æÖеÄͬ¡¡
¡¡¡¡Ò»·Ý¿½±´£¬ÕâÑù¾ÍÓÐЧµÄ½ÚÊ¡ÁËÓ¦ÓóÌÐòËùÕ¼ÓõÄÄÚ´æ×ÊÔ´£¬¼õ¡¡
¡¡¡¡ÉÙÁËƵ·±µÄÄÚ´æ½»»»£¬´Ó¶øÌá¸ßÁËÓ¦ÓóÌÐòµÄÖ´ÐÐЧÂÊ¡£¡¡¡¡
¡¡l¡¡ÓÉÓÚDLLÊǶÀÁ¢ÓÚ¿ÉÖ´ÐÐÎļþµÄ£¬Òò´Ë£¬Èç¹ûÐèÒªÏòDLLÖÐÔö¼ÓС¡
¡¡¡¡¡¡µÄº¯Êý»òÊÇÔöÇ¿ÏÖÓк¯ÊýµÄ¹¦ÄÜ£¬Ö»ÒªÔÓк¯ÊýµÄ²ÎÊýºÍ·µ»ØÖµ¡¡
¡¡¡¡µÈÊôÐÔ²»±ä£¬ÄÇô£¬ËùÓÐʹÓøÃDLLµÄÔÓÐÓ¦ÓóÌÐò¶¼¿ÉÒÔÔÚÉý¼¶¡¡
¡¡¡¡ºóµÄDLLµÄÖ§³ÖÏÂÔËÐУ¬¶ø²»ÐèÒªÖØбàÒë¡£Õâ¾Í¼«´óµÄ·½±ãÁËÓ¦¡¡
¡¡¡¡ÓóÌÐòµÄÉý¼¶ºÍÊÛºóÖ§³Ö¡£¡¡¡¡
¡¡l¡¡DLL³ýÁË°üÀ¨º¯ÊýµÄÖ´ÐдúÂëÒÔÍ⣬»¹¿ÉÒÔÖ»°üÀ¨Èçͼ±ê¡¢Î»Í¼¡¢¡¡
¡¡¡¡×Ö·û´®ºÍ¶Ô»°¿òÖ®ÀàµÄ×ÊÔ´£¬Òò´Ë¿ÉÒÔ°ÑÓ¦ÓóÌÐòËùʹÓõÄ×ÊÔ´¡¡
¡¡¡¡¶ÀÁ¢³öÀ´×ö³ÉDLL¡£¶ÔÓÚһЩ³£ÓõÄ×ÊÔ´£¬°ÑËüÃÇ×öµ½DLLÖк󣬡¡
¡¡¡¡¾Í¿ÉΪ¶à¸öÓ¦ÓóÌÐòËù¹²Ïí¡£¡¡¡¡
¡¡l¡¡±ãÓÚ½¨Á¢¶àÓïÑÔµÄÓ¦ÓóÌÐò¡£ÎÒÃÇ¿ÉÒ԰ѶàÓïÑÔÓ¦ÓóÌÐòÖÐËùʹ¡¡
¡¡¡¡ÓõÄÓëÓïÑÔÏà¹ØµÄº¯Êý×öµ½DLLÖУ¬Ö»Òª²»Í¬ÓïÑÔµÄÓ¦ÓóÌÐòËùµ÷¡¡
¡¡¡¡Óõĺ¯Êý¶¼¾ßÓÐÏàͬµÄ½Ó¿Ú£¬ÕâÑù¾Í¿ÉÒÔͨ¹ý¼òµ¥µØ¸ü»»DLLÀ´Êµ¡¡
¡¡¡¡ÏÖ¶àÓïÑÔÖ§³Ö¡£¡¡¡¡
È»¶ø£¬Ê¹ÓÃDLLÒ²ÓÐÆä²»×ãÖ®´¦¡£×îµäÐ͵ľÍÊÇÓ¦ÓóÌÐòÔÚÔËÐÐʱ±Ø¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡663¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
ÐëÒªÓÐÏàÓ¦µÄDLLµÄÖ§³Ö¡£ÁíÍ⣬ʹÓÃDLLÒ²Ôö´óÁ˳ÌÐòÔËÐеĿªÏú£¬¡¡
ºÃÔÚÕâÖÖ¶îÍâµÄ¿ªÏú¶ÔÓÚ´ó¶àÊýÓ¦ÓóÌÐòµÄÓ°Ïì²¢²»Ã÷ÏÔ£¬ÎÒÃÇÒ²Ö»¡¡
ÊÇÔÚijЩ¶ÔÔËÐÐËÙ¶ÈÒªÇó¿Á¿ÌµÄÌØÊⳡºÏ£¬²Å²»µÃ²»¿¼ÂÇÕâÒ»µã¡£¡¡¡¡
Visual¡¡C£«£«¡¡5¡£0Ö§³Ö¶àÖÖDLL£¬°üÀ¨£º¡¡¡¡
¡¡¡¡l¡¡·ÇMFC¡¡DLL¡¡¡¡
¡¡¡¡l¡¡¾²Ì¬Á´½Óµ½MFCµÄ³£¹æDLL¡¡¡¡
¡¡¡¡l¡¡¶¯Ì¬Á´½Óµ½MFCµÄ³£¹æDLL¡¡¡¡
¡¡¡¡l¡¡MFCÀ©Õ¹DLL¡¡¡¡
ÆäÖзÇMFC¡¡DLL¡¡£¨non¡MFC¡¡DLL¡¡£©ÄÚ²¿²»Ê¹ÓÃMFC£¬µ÷Ó÷ÇMFC¡¡DLLÌṩ¡¡
µÄµ¼³öº¯ÊýµÄ¿ÉÖ´ÐгÌÐò¿ÉÒÔʹÓÃMFC£¬Ò²¿ÉÒÔ²»Ê¹ÓÃMFC¡£Ò»°ãÀ´¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡standard¡¡¡¡C¡¡¡¡
˵£¬·ÇMFC¡¡¡¡¡¡¡¡¡¡DLLµÄµ¼³öº¯Êý¶¼Ê¹Óñê×¼µÄC½Ó¿Ú¡¡£¨¡¡
interface£©¡£¡¡¡¡
ÆäÓàÈýÖÖDLLµÄÄÚ²¿¶¼Ê¹ÓÃÁËMFC¡£¹ËÃû˼Ò壬¾²Ì¬Á´½Óµ½MFCµÄ³£¹æ¡¡
DLL¡¡£¨regular¡¡DLL¡¡statically¡¡linking¡¡to¡¡MFC£©ºÍ¶¯Ì¬Á´½Óµ½MFC¡¡
µÄ³£¹æDLL¡¡£¨regular¡¡DLL¡¡dynamically¡¡linking¡¡to¡¡MFC£©µÄÇø±ðÔÚ¡¡
ÓÚÒ»¸öʹÓõÄÊÇMFCµÄ¾²Ì¬Á´½Ó¿â£¬¶øÁíÒ»¸öʹÓõÄÊÇMFCµÄDLL¡£Õâ¡¡
ºÍÒ»°ãµÄMFCÓ¦ÓóÌÐòµÄÇé¿öÊǺÜÀàËƵġ£¡¡¡¡
MFCÀ©Õ¹DLLÒ»°ãÓÃÀ´ÌṩÅÉÉúÓÚMFCµÄ¿ÉÖØÓõÄÀ࣬ÒÔÀ©Õ¹ÒÑÓеÄMFC¡¡
Àà¿âµÄ¹¦ÄÜ¡£MFCÀ©Õ¹DLLʹÓÃMFCµÄ¶¯Ì¬Á´½Ó°æ±¾¡£Ö»ÓÐʹÓÃMFC¶¯Ì¬¡¡
Á´½ÓµÄ¿ÉÖ´ÐгÌÐò¡¡£¨ÎÞÂÛÊÇEXE»¹ÊÇDLL£©²ÅÄÜ·ÃÎÊMFCÀ©Õ¹DLL¡£MFC¡¡
À©Õ¹DLLµÄÁíÒ»¸öÓÐÓõŦÄÜÊÇËü¿ÉÒÔÔÚÓ¦ÓóÌÐòºÍËüËù¼ÓÔصÄMFCÀ©¡¡
Õ¹DLLÖ®¼ä´«µÝMFCºÍMFCÅÉÉú¶ÔÏóµÄÖ¸Õë¡£ÔÚÆäËüÇé¿öÏ£¬ÕâÑù×öÊÇ¡¡
¿ÉÄܵ¼ÖÂÎÊÌâµÄ¡£¡¡¡¡
¡¡¡¡l¡¡×¢Ò⣺¡¡¡¡
¡¡¡¡l¡¡Ö»ÓÐVisual¡¡C£«£«¡¡5¡£0µÄרҵ°æºÍÆóÒµ°æ²ÅÖ§³Öµ½MFCµÄ¾²Ì¬Á´½Ó¡£¡¡¡¡
¡¡¡¡l¡¡¾²Ì¬Á´½Óµ½MFCµÄ³£¹æDLL¹ýÈ¥µÄUSRDLLÓÐ×ÅÏàͬµÄÌØÐÔ£¬Í¬Ñù¡¡
¡¡¡¡¡¡µÄ£¬MFCÀ©Õ¹DLLºÍ¹ýÈ¥µÄAFXDLLÓÐ×ÅÏàͬµÄÌØÐÔ¡£ÔÚVisual¡¡C£«£«¡¡¡¡
¡¡¡¡¡¡5¡£0ÖÐÒѲ»ÔÙʹÓÃUSRDLLºÍAFXDLLÕâÁ½¸öÊõÓï¡£¡¡¡¡
ÈçºÎÑ¡ÔñËùÓ¦¸ÃʹÓõÄDLLµÄÀàÐÍÄØ£¿ÎÒÃÇ¿ÉÒÔ´ÓÒÔϼ¸¸ö·½ÃæÀ´¿¼¡¡
ÂÇ£º¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡664¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡l¡¡Ïà±ÈʹÓÃÁËMFCµÄDLL¶øÑÔ£¬·ÇMFC¡¡DLLÏԵøüΪ¶ÌС¾«º·¡£Òò´Ë£¬¡¡
¡¡¡¡¡¡Èç¹ûDLL²»ÐèҪʹÓÃMFC£¬ÄÇôʹÓ÷ÇMFC¡¡DLLÊÇÒ»¸öºÜºÃµÄÑ¡Ôñ£¬¡¡
¡¡¡¡¡¡Ëü½«ÏÔÖøµØ½ÚÊ¡´ÅÅ̺ÍÄÚ´æ¿Õ¼ä¡£Í¬Ê±£¬ÎÞÂÛÓ¦ÓóÌÐòÊÇ·ñʹÓá¡
¡¡¡¡¡¡ÁËMFC£¬¶¼¿ÉÒÔµ÷Ó÷ÇMFC¡¡DLLÖÐËùµ¼³öµÄº¯Êý¡£¡¡¡¡
¡¡¡¡l¡¡Èç¹ûÐèÒª´´½¨Ê¹ÓÃÁËMFCµÄDLL£¬²¢Ï£ÍûMFCºÍ·ÇMFCÓ¦ÓóÌÐò¶¼ÄÜ¡¡
¡¡¡¡¡¡Ê¹ÓÃËù´´½¨µÄDLL£¬ÄÇô¿ÉÒÔÑ¡ÔñµÄ·¶Î§°üÀ¨¾²Ì¬Á´½Óµ½MFCµÄ³£¡¡
¡¡¡¡¡¡¹æDLLºÍ¶¯Ì¬Á´½Óµ½MFCµÄ³£¹æDLL¡£¶¯Ì¬Á´½Óµ½MFCµÄ³£¹æDLL±È½Ï¡¡
¡¡¡¡¡¡¶ÌС£¬Òò´Ë¿ÉÒÔ½ÚÊ¡´ÅÅ̺ÍÄڴ棬µ«ÊÇ£¬ÔÚ·Ö·¢¶¯Ì¬Á´½Óµ½MFCµÄ¡¡
¡¡¡¡¡¡³£¹æDLLʱ£¬±ØÐëͬʱ·Ö·¢MFCµÄÖ§³ÖDLL£¬ÈçMFCx0¡£DLLºÍ¡¡
¡¡¡¡¡¡MSVCRT¡£DLLµÈ¡£¶øʹÓþ²Ì¬Á´½Óµ½MFCµÄ³£¹æDLLÔò²»´æÔÚÕâÖÖÎÊ¡¡
¡¡¡¡¡¡Ìâ¡£¡¡¡¡
¡¡¡¡l¡¡Èç¹ûÏ£ÍûÔÚDLLÖÐʵÏÖ´ÓMFCÅÉÉúµÄ¿ÉÖØÓõÄÀ࣬»òÕßÊÇÏ£ÍûÔÚÓ¦¡¡
¡¡¡¡¡¡ÓóÌÐòºÍDLLÖ®¼ä´«µÝMFCµÄÅÉÉú¶ÔÏóʱ£¬±ØÐëÑ¡ÔñMFCÀ©Õ¹DLL¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡µÚ¶þ½Ú¡¡´´½¨ºÍʹÓö¯Ì¬Á´½Ó¿â¡¡¡¡
±¾½ÚÒÔ·ÇMFC¡¡¡¡DLLΪÀýÀ´½²½âDLLµÄ½á¹¹ºÍµ¼³ö·½·¨£¬²¢½éÉÜ´´½¨ºÍʹ¡¡
ÓÃDLLµÄ·½·¨ºÍ²½Öè¡£¡¡¡¡
13¡£2¡£1¡¡DLLµÄ½á¹¹ºÍµ¼³ö·½Ê½¡¡¡¡
DLLÎļþºÍEXEÎļþ¶¼ÊôÓÚ¿ÉÖ´ÐÐÎļþ£¬²»Í¬µÄÊÇDLLÎļþ°üÀ¨ÁËÒ»¸ö¡¡
µ¼³ö±í£¬µ¼³ö±íÖиø³öÁË¿ÉÒÔ´ÓDLLÖе¼³öµÄËùÓк¯ÊýµÄÃû×Ö¡£Íⲿ¡¡
¿ÉÖ´ÐгÌÐòÖ»ÄÜ·ÃÎÊ°üÀ¨ÔÚDLLµÄµ¼³ö±íÖеĺ¯Êý£¬DLLÖеÄÆäËüº¯Êý¡¡
ÊÇ˽Óеģ¬²»ÄÜΪÍⲿ¿ÉÖ´ÐгÌÐòËù·ÃÎÊ¡£¡¡¡¡
¿ÉÒÔʹÓÃVisual¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡C£«£«ÌṩµÄDUMPBINʵÓóÌÐò¡¡£¨¿ÉÒÔÔÚ¡¡
DevStudioVCbin¡¡Ä¿Â¼ÏÂÕÒµ½Õâ¸ö¹¤¾ß£©À´²é¿´Ò»¸öDLLÎļþµÄ½á¡¡
¹¹¡£¾ÙÒ»¸öÀý×Ó£¬Èç¹ûÐèÒª²é¿´DLLÎļþmsgbox¡£dll¡¡£¨ÎÒÃǽ«ÔÚ±¾Ð¡¡¡
½ÚµÄºóÐøÄÚÈÝÖд´½¨¸ÃDLL£©µÄµ¼³ö±í£¬¿ÉÒÔÔÚÃüÁîÌáʾ·ûϼüÈëÏ¡¡
ÃæµÄÃüÁ¡¡¡¡
¡·dumpbin¡¡/exports¡¡msgbox¡£dll¡¡¡¡
ÔËÐнá¹ûÈçÏ£º¡¡¡¡
Microsoft¡¡£¨R£©¡¡COFF¡¡Binary¡¡File¡¡Dumper¡¡Version¡¡5¡£00¡£7022¡¡¡¡
Copyright¡¡£¨C£©¡¡Microsoft¡¡Corp¡¡1992¡1997¡£¡¡All¡¡rights¡¡reserved¡£¡¡¡¡
Dump¡¡of¡¡file¡¡msgbox¡£dll¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡665¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
File¡¡Type£º¡¡DLL¡¡¡¡
Section¡¡contains¡¡the¡¡following¡¡Exports¡¡for¡¡MSGBOX¡£dll¡¡¡¡
0¡¡characteristics¡¡¡¡
351643C3¡¡time¡¡date¡¡stamp¡¡Mon¡¡Mar¡¡23¡¡19£º13£º07¡¡1998¡¡¡¡
0¡£00¡¡version¡¡¡¡
1¡¡ordinal¡¡base¡¡¡¡
1¡¡number¡¡of¡¡functions¡¡¡¡
1¡¡number¡¡of¡¡names¡¡¡¡
ordinal¡¡hint¡¡name¡¡¡¡
1¡¡0¡¡MsgBox¡¡£¨00001000£©¡¡¡¡
Summary¡¡¡¡
7000¡¡¡£data¡¡¡¡
1000¡¡¡£idata¡¡¡¡
2000¡¡¡£rdata¡¡¡¡
2000¡¡¡£reloc¡¡¡¡
17000¡¡¡£text¡¡¡¡
ÓÉÉÏÃæµÄ½á¹ûµÃÖª£¬msgbox¡£dllÖнö°üÀ¨ÁËÒ»¸öµ¼³öº¯ÊýMsgBox£¨£©¡£¡¡¡¡
¡¡¡¡¡¡l¡¡×¢Ò⣺¡¡¡¡
¡¡¡¡¡¡l¡¡½ö½öÖªµÀµ¼³öº¯ÊýµÄÃû³Æ²¢²»×ãÒÔ´ÓDLL¡¡Öе¼³ö¸Ãº¯Êý¡£ÈôÔÚÓ¦Óá¡
¡¡¡¡¡¡¡¡¡¡³ÌÐòÖÐʹÓÃÏÔʽÁ´½Ó¡¡£¨link¡¡explicitly£©£¬ÖÁÉÙ»¹Ó¦¸ÃÖªµÀµ¼³ö¡¡
¡¡¡¡¡¡¡¡¡¡º¯ÊýµÄ·µ»ØÖµµÄÀàÐÍÒÔ¼°Ëù´«µÝ¸øµ¼³öº¯ÊýµÄ²ÎÊýµÄ¸öÊý¡¢Ë³Ðò¡¡
¡¡¡¡¡¡¡¡¡¡ºÍÀàÐÍ£»ÈôʹÓÃÒþº¬Á´½Ó¡¡£¨link¡¡implicitly£©£¬±ØÐëÓаüÀ¨µ¼³ö¡¡
¡¡¡¡¡¡¡¡¡¡º¯Êý¡¡£¨»òÀࣩµÄ¶¨ÒåµÄÍ·Îļþ¡¡£¨¡£HÎļþ£©ºÍÒýÈë¿â¡¡£¨import¡¡¡¡
¡¡¡¡¡¡¡¡¡¡library£¬¡£LIBÎļþ£©£¬ÕâЩÎļþÊÇÓÉDLLµÄ´´½¨ÕßËùÌṩµÄ¡£¹Ø¡¡
¡¡¡¡¡¡¡¡¡¡ÓÚÏÔʽÁ´½ÓºÍÒþº¬Á´½Ó£¬½«ÔÚ±¾Õµġ¡¡°13¡£2¡£2¡¡Á´½ÓÓ¦ÓóÌÐòµ½¡¡
¡¡¡¡¡¡¡¡¡¡DLL¡±Ð¡½ÚÖн²Êö¡£¡¡¡¡
´ÓDLLÖе¼³öº¯ÊýÓÐÁ½ÖÖ·½·¨£º¡¡¡¡
¡¡¡¡¡¡l¡¡ÔÚ´´½¨DLLʱʹÓÃÄ£¿é¶¨Òå¡¡£¨module¡¡DEFinition£¬¡£DEF£©Îļþ¡£¡¡¡¡
¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡Page¡¡666¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡
¡¡¡¡l¡¡ÔÚ¶¨Ò庯ÊýʱʹÓùؼü×Ö__declspec£¨dllexport£©¡£¡¡¡¡
ÏÂÃæÎÒÃÇͨ¹ýÒ»¸ö¼òµ¥µÄÀý×ÓÀ´·Ö±ð˵Ã÷Á½ÖÖ·½·¨µÄʹÓá£ÔÚÕâ¸öÀý¡¡
×ÓÖУ¬ÎÒÃǽ«´´½¨Ò»¸öÖ»°üÀ¨Ò»¸öº¯ÊýMsgBox£¨£©¡¡µÄDLL£¬º¯ÊýMsgBox¡¡
£¨£©ÓÃÀ´ÏÔʾһ¸öÏûÏ¢¿ò£¬ËüºÍWin32¡¡¡¡¡¡APIº¯ÊýMessageBox£¨£©µÄ¹¦ÄÜÊÇ¡¡
Ò»Ñù£¬Ö»²»¹ýÔÚº¯ÊýMsgBox£¨£©ÖУ¬²»ÐèÒªÖ¸¶¨ÏûÏ¢µÄ¸¸´°¿Ú£¬¶øÇÒ¿É¡¡
ÒÔȱʡÆäËüËùÓеIJÎÊý¡
¿ì½Ý²Ù×÷: °´¼üÅÌÉÏ·½Ïò¼ü ¡û »ò ¡ú ¿É¿ìËÙÉÏÏ·ҳ °´¼üÅÌÉ쵀 Enter ¼ü¿É»Øµ½±¾ÊéĿ¼ҳ °´¼üÅÌÉÏ·½Ïò¼ü ¡ü ¿É»Øµ½±¾Ò³¶¥²¿!
ÎÂÜ°Ìáʾ£º ο´Ð¡ËµµÄͬʱ·¢±íÆÀÂÛ£¬Ëµ³ö×Ô¼ºµÄ¿´·¨ºÍÆäËüС»ï°éÃÇ·ÖÏíÒ²²»´íŶ£¡·¢±íÊéÆÀ»¹¿ÉÒÔ»ñµÃ»ý·ÖºÍ¾Ñé½±Àø£¬ÈÏÕæдԴ´ÊéÆÀ ±»²ÉÄÉΪ¾«ÆÀ¿ÉÒÔ»ñµÃ´óÁ¿½ð±Ò¡¢»ý·ÖºÍ¾Ñé½±ÀøŶ£¡