±ÏÒµÂÛÎÄ - VC++»·¾³ÏµĶ¯Ì¬Á´½Ó¿âµÄ¿ª·¢ÓëÓ¦ÓÃ

Ŀ¼

Ŀ¼ .......................................................................................................................................................................1 ÖÐÎÄÕªÒª ...............................................................................................................................................................2 Abstract .................................................................................................................................................................2 Ò»¡¢¸ÅÂÛ ...............................................................................................................................................................3

1.1. Ñо¿±³¾° ...............................................................................................................................................3 1.2. ¶¯Ì¬Á´½Ó¿âµÄ¶¨Òå ...............................................................................................................................3 1.3. ¶¯Ì¬Á´½Ó¿âÓ뾲̬Á´½Ó¿â ...................................................................................................................3

1.3.1. ¾²Ì¬Á´½Ó¿â ................................................................................................................................3 1.3.2. ¶¯Ì¬Á´½Ó¿âÓ뾲̬Á´½Ó¿âµÄÇø±ð ............................................................................................4 1.4. ¶¯Ì¬Á´½Ó¿âµÄÓŵã ...............................................................................................................................4 1.5. ÔÚÒÔÏÂÕâЩÇé¿öÏ£¬±ØÐëʹÓö¯Ì¬Á´½Ó¿â£º ...................................................................................4 1.6. Visual C++Ö§³ÖµÄ¶¯Ì¬Á´½Ó¿âµÄÀàÐÍ ...................................................................................................5 ¶þ¡¢·ÇMFC¶¯Ì¬Á´½Ó¿â......................................................................................................................................5

2.1. Non-MFC DLL¶¯Ì¬Á´½Ó¿âµÄ´´½¨ .........................................................................................................5

2.1.1. ´´½¨Ò»¸öNon-MFC Dll¹¤³Ì¡°MyDll¡± ....................................................................................6 2.1.2. ´úÂë·ÖÎö ....................................................................................................................................8 2.2. ÉùÃ÷µ¼³öº¯Êý .......................................................................................................................................9 2.3. DLLµÄµ÷Ó÷½Ê½ .....................................................................................................................................9 2.4. DllMainº¯Êý ....................................................................................................................................... 11 Èý¡¢MFC¹æÔò¶¯Ì¬Á´½Ó¿âµÄ´´½¨ .................................................................................................................... 13

3.1. ¸ÅÊö .................................................................................................................................................... 13 3.2. MFC¹æÔòDLL·ÖΪÁ½Àࣺ ................................................................................................................. 13 3.3. MFC¹æÔòDLLµÄ´´½¨ ......................................................................................................................... 14 3.4. MFC¹æÔòDLLµÄµ÷Óà ......................................................................................................................... 18 3.5. Òþʽµ÷Óà ............................................................................................................................................ 22 ËÄ¡¢MFCÀ©Õ¹¶¯Ì¬Á´½Ó¿âµÄ´´½¨ .................................................................................................................... 24 4.1. ¸ÅÊö .................................................................................................................................................... 24 4.3. MFCÀ©Õ¹DLLµÄ¼ÓÔØ ...................................................................................................................... 30 Îå¡¢¶¯Ì¬Á´½Ó¿âµÄµäÐÍÓ¦Óà ............................................................................................................................ 31

5.4. DLLľÂí .............................................................................................................................................. 36 Áù¡¢²Î¿¼ÎÄÏ× .................................................................................................................................................... 38 Æß¡¢ÖÂл ............................................................................................................................................................ 38

1

VC++»·¾³Ï¶¯Ì¬Á´½Ó¿âµÄ¿ª·¢¼°Ó¦ÓÃ

ÖÐÎÄÕªÒª

¶¯Ì¬Á´½Ó¿âÓ¢ÎÄΪDynamic Link Library£¬Ó¢ÎÄËõдΪDLL£¬ÊdzÌÐòÔËÐÐʱÓɸóÌÐò¶¯Ì¬Á´½Óµ÷Óõĺ¯Êý¿â£¬ÊÇһЩº¯Êý¡¢Êý¾ÝºÍÀ༯ºÏ³ÉµÄ¿ÉÖ´ÐÐÄ£¿é£¬³ÌÐòÔ±¿ÉÒÔ½«¶¯Ì¬Á´½Ó¿â¶¯Ì¬µØ¼¯³Éµ½×Ô¼ºµÄ³ÌÐòÖÐÒÔʹÓÿâÖеĺ¯Êý¡¢Êý¾ÝºÍÀà¡£¿ª·¢ºÍÓ¦Óö¯Ì¬Á´½Ó¿â£¬ÓÐÖúÓÚÊý¾ÝºÍ×ÊÔ´µÄ¹²Ïí£¬¼ò»¯ÁËÈí¼þÏîÄ¿µÄ¹ÜÀí¡£±¾ÎÄÖ÷Òª½éÉܶ¯Ì¬Á´½Ó¿â´´½¨¡¢µ÷Ó÷½·¨£¬¼°ÆäµäÐÍÓ¦Óá£

¹Ø¼ü´Ê£º¶¯Ì¬Á´½Ó¿â£¨DLL£©£¬·ÇMFC DLL£¬MFC¹æÔòDLL£¬MFCÀ©Õ¹DLL

Abstract

Dynamic Link Library (DLL) encapsulates the shared resource and code£®In exploring the application based on Windows£¬the use of DLL technology can greatly save the memory£®Using DLL developing project can simplify the project management and speed up the exploration£®This paper£¬introducing the implicit and explicit linking of DLL with instances£¬provides technical support to technicians in exploring and using DLL£®

Key words£ºDynamic Link Library (DLL) £¬ Non-MFC DLL £¬MFC Regular DLL £¬ MFC Extension DLL

2

VC++»·¾³Ï¶¯Ì¬Á´½Ó¿âµÄ¿ª·¢¼°Ó¦ÓÃ

Ò»¡¢¸ÅÂÛ

1.1. Ñо¿±³¾°

×Ô´Ó΢ÈíÍÆ³ö16λµÄWindows²Ù×÷ϵͳÆð£¬´ËºóÿÖÖ°æ±¾µÄWindows²Ù×÷ϵͳ¶¼·Ç³£ÒÀÀµÓÚ¶¯Ì¬Á´½Ó¿â(DLL)Öеĺ¯ÊýºÍÊý¾Ý£¬Êµ¼ÊÉÏWindows²Ù×÷ϵͳÖм¸ºõËùÓеÄÄÚÈݶ¼ÓÉDLLÒÔÒ»ÖÖ»òÁíÍâÒ»ÖÖÐÎʽ´ú±í×Å£¬ÀýÈçÏÔʾµÄ×ÖÌåºÍͼ±ê´æ´¢ÔÚGDI DLLÖС¢ÏÔʾWindows×ÀÃæºÍ´¦ÀíÓû§µÄÊäÈëËùÐèÒªµÄ´úÂë±»´æ´¢ÔÚÒ»¸öUser DLLÖС¢Windows±à³ÌËùÐèÒªµÄ´óÁ¿µÄAPIº¯ÊýÒ²±»°üº¬ÔÚKernel DLLÖС£

ÔÚWindows²Ù×÷ϵͳÖÐʹÓÃDLLÓкܶàÓŵ㣬×îÖ÷ÒªµÄÒ»µãÊǶà¸öÓ¦ÓóÌÐò¡¢ÉõÖÁÊDz»Í¬ÓïÑÔ±àдµÄÓ¦ÓóÌÐò¿ÉÒÔ¹²ÏíÒ»¸öDLLÎļþ£¬ÕæÕýʵÏÖÁË×ÊÔ´\¹²Ïí\£¬´ó´óËõСÁËÓ¦ÓóÌÐòµÄÖ´ÐдúÂ룬¸ü¼ÓÓÐЧµÄÀûÓÃÁËÄڴ棻ʹÓÃDLLµÄÁíÒ»¸öÓŵãÊÇDLLÎļþ×÷Ϊһ¸öµ¥¶ÀµÄ³ÌÐòÄ£¿é£¬·â×°ÐÔ¡¢¶ÀÁ¢ÐԺã¬ÔÚÈí¼þÐèÒªÉý¼¶µÄʱºò£¬¿ª·¢ÈËÔ±Ö»ÐèÒªÐÞ¸ÄÏàÓ¦µÄDLLÎļþ¾Í¿ÉÒÔÁË£¬¶øÇÒ£¬µ±DLLÖеĺ¯Êý¸Ä±äºó£¬Ö»Òª²»ÊDzÎÊýµÄ¸Ä±ä,³ÌÐò´úÂë²¢²»ÐèÒªÖØÐ±àÒë¡£ÕâÔÚ±à³Ìʱʮ·ÖÓÐÓ㬴ó´óÌá¸ßÁËÈí¼þ¿ª·¢ºÍά»¤µÄЧÂÊ¡£

¼ÈÈ»DLLÄÇÃ´ÖØÒª£¬ËùÒÔ¸ãÇå³þʲôÊÇDLL¡¢ÈçºÎÔÚWindows²Ù×÷ϵͳÖпª·¢Ê¹ÓÃDLLÊdzÌÐò¿ª·¢ÈËÔ±²»µÃ²»½â¾öµÄÒ»¸öÎÊÌâ¡£±¾ÎÄÕë¶ÔÕâЩÎÊÌ⣬ͨ¹ýÒ»¸ö¼òµ¥µÄÀý×Ó£¬È«ÃæµØ½âÎöÁËÔÚVisual C++±àÒë»·¾³Ï±à³ÌʵÏÖDLLµÄ¹ý³Ì¡£

1.2. ¶¯Ì¬Á´½Ó¿âµÄ¶¨Òå

¶¯Ì¬Á´½Ó¿âÓ¢ÎÄΪDynamic Link Library£¬Ó¢ÎÄËõдΪDLL£¬ÊdzÌÐòÔËÐÐʱÓɸóÌÐò¶¯Ì¬Á´½Óµ÷Óõĺ¯Êý¿â£¬ÊÇһЩº¯Êý¡¢Êý¾ÝºÍÀ༯ºÏ³ÉµÄ¿ÉÖ´ÐÐÄ£¿é£¬³ÌÐòÔ±¿ÉÒÔ½«¶¯Ì¬Á´½Ó¿â¶¯Ì¬µØ¼¯³Éµ½×Ô¼ºµÄ³ÌÐòÖÐÒÔʹÓÿâÖеĺ¯Êý¡¢Êý¾ÝºÍÀà¡£¶¯Ì¬Á´½ÓÌṩÁËÒ»ÖÖ·½·¨£¬Ê¹½ø³Ì¿ÉÒÔµ÷Óò»ÊôÓÚÆä¿ÉÖ´ÐдúÂëµÄº¯Êý¡£º¯ÊýµÄ¿ÉÖ´ÐдúÂëλÓÚÒ»¸ö DLL ÖУ¬¸Ã DLL °üº¬Ò»¸ö»ò¶à¸öÒѱ»±àÒë¡¢Á´½Ó²¢ÓëʹÓÃËüÃǵĽø³Ì·Ö¿ª´æ´¢µÄº¯Êý¡£¶à¸öÓ¦ÓóÌÐò¿Éͬʱ·ÃÎÊÄÚ´æÖе¥¸öDLL ¸±±¾µÄÄÚÈÝ¡£

1.3. ¶¯Ì¬Á´½Ó¿âÓ뾲̬Á´½Ó¿â

1.3.1. ¾²Ì¬Á´½Ó¿â

¾²Ì¬Á´½Ó¿â¾ÍÊÇÄãʹÓõÄ.libÎļþ£¬¿âÖеĴúÂë×îºóÐèÒªÁ¬½Óµ½ÄãµÄ¿ÉÖ´ÐÐÎļþÖÐÈ¥¡£

3

VC++»·¾³Ï¶¯Ì¬Á´½Ó¿âµÄ¿ª·¢¼°Ó¦ÓÃ

¾²Ì¬Á´½Ó¿â²»Í¬ÓÚ¶¯Ì¬Á´½Ó¿â£¨*.dll£©£¬ÔÚ¾²Ì¬¿âÇé¿öÏ£¬º¯ÊýºÍÊý¾Ý±»±àÒë½øÒ»¸ö¶þ½øÖÆÎļþ£¨Í¨³£À©Õ¹ÃûΪ*.LIB£©£¬Visual C++µÄ±àÒëÆ÷ÔÚÁ´½Ó¹ý³ÌÖн«´Ó¾²Ì¬¿âÖлָ´ÕâЩº¯ÊýºÍÊý¾Ý²¢°ÑËûÃǺÍÓ¦ÓóÌÐòÖÐµÄÆäËûÄ£¿é×éºÏÔÚÒ»ÆðÉú³É¿ÉÖ´ÐÐÎļþ¡£Õâ¸ö¹ý³Ì³ÆÎª\¾²Ì¬Á´½Ó\£¬´ËʱÒòΪӦÓóÌÐòËùÐèµÄÈ«²¿ÄÚÈݶ¼ÊÇ´Ó¿âÖи´ÖÆÁ˳öÀ´£¬ËùÒÔ¾²Ì¬¿â±¾Éí²¢²»ÐèÒªÓë¿ÉÖ´ÐÐÎļþÒ»Æð·¢ÐС£Óû§ÔÚ½»¸¶×îÖÕ¾²Ì¬Á´½Ó¿âʱ£¬Ö»ÐèÒªÌṩ.libÎļþºÍÏàÓ¦µÄÍ·Îļþ£¬²»ÐèÒªÔÙÌṩ¿âµÄÔ´´úÂë¡£ÔÚÐèҪʹÓþ²Ì¬¿âµÄ¹¤³ÌÖУ¬°üº¬ÏàÓ¦µÄÍ·Îļþ£¬²¢°Ñ.libÎļþ¼ÓÈ빤³ÌÖоͿÉÒÔÁË¡£

1.3.2. ¶¯Ì¬Á´½Ó¿âÓ뾲̬Á´½Ó¿âµÄÇø±ð

¶¯Ì¬Á´½Ó·¢ÉúÔÚ³ÌÐòÔËÐÐʱ£¬¶¯Ì¬Á´½ÓµÄº¯Êý´úÂë²»³öÏÖÔÚ³ÌÐòµÄEXEÎļþÖУ¬Ëü½ö½ö°üº¬ÁËÓ¦ÓóÌÐòÔËÐйý³ÌÖÐËùµ÷ÓõÄDLLº¯ÊýµÄһЩ×î»ù±¾ÐÅÏ¢£¨ÀýÈçDLLÎļþλÖᢺ¯ÊýÃûµÈ£©£»¶ø¾²Ì¬Á´½Ó·¢ÉúÔÚ±àÒëʱ£¬¾²Ì¬Á´½ÓµÄº¯Êý´úÂëʵ¼Ê±»²åÈëµ½³ÌÐòµÄEXEÎļþÖС£

1.4. ¶¯Ì¬Á´½Ó¿âµÄÓŵã

¶¯Ì¬Á´½Ó¿âËæ´¦¿É¼û£¬ÎÞÂÛ´óÐÍϵͳ»¹ÊÇС¹æÄ£Èí¼þ£¬¶¼Ó¦ÓÃÁ˶¯Ì¬Á´½Ó¿â£¬ÓÐЧµØÊµÏÖÁË×ÊÔ´¹²Ïí¡£ÔÚÈí¼þ¿ª·¢ÖУ¬Ó¦Óö¯Ì¬Á´½Ó¿â¾ßÓÐÒÔÏÂÓŵ㣺

£¨1£©À©Õ¹ÁËÓ¦ÓóÌÐòµÄÌØÐÔ£»

£¨2£©¿ÉÒÔÓÃÐí¶àÖÖ±à³ÌÓïÑÔÀ´±àд£» £¨3£©¼ò»¯ÁËÈí¼þÏîÄ¿µÄ¹ÜÀí£» £¨4£©ÓÐÖúÓÚ½ÚÊ¡Äڴ棻 £¨5£©ÓÐÖúÓÚ×ÊÔ´¹²Ïí£» £¨6£©ÓÐÖúÓÚÓ¦ÓóÌÐòµÄ±¾µØ»¯£» £¨7£©ÓÐÖúÓÚ½â¾öƽ̨²îÒì¡£

1.5. ÔÚÒÔÏÂÕâЩÇé¿öÏ£¬±ØÐëʹÓö¯Ì¬Á´½Ó¿â£º

£¨1£©¶à¸öÓ¦ÓóÌÐò¹²Ïí´úÂëºÍÊý¾Ý

£¨2£©ÔÚ¸÷×Ó³ÌÐò¹ýÂËϵͳÏûϢʱ±ØÐëʹÓö¯Ì¬Á´½Ó¿â £¨3£©É豸Çý¶¯³ÌÐò±ØÐëÊǶ¯Ì¬Á´½Ó¿â

£¨4£©ÔÚ¶Ô»°¿ò±à¼­Æ÷ÖÐʹÓÃ×Ô¼º¶¨ÒåµÄ¿Ø¼þ£¬Ò²±ØÐëʹÓö¯Ì¬Á´½Ó¿â

4

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@)