1 VS 2005·Î ¸¸µç ÇÁ·Î±×·¥À» ½ÇÇàÇÒ ¶§ ÇÊ¿äÇÑ ÆÄÀÏ #Âü°í;
http://www.gungume.com/75
DLL HellÀ̶õ http://www.larosel.com/39 http://somma.egloos.com/3020481 http://hongyver.pe.kr/ttblog/tag/dll%20hell
»õ·Î¿î ÇÁ·Î±×·¥À» ¼³Ä¡ÇÒ¶§ ´Ù¸¥ ÇÁ·Î±×·¥ÀÌ »ç¿ëÇÏ´Â DLLÀ» µ¤¾î ¾²°Å³ª ȤÀº ¹öÀüÀÇ ºÒÀÏÄ¡·Î ¿À´Â ¹®Á¦·Î ±âÁ¸ÀÇ ÇÁ·Î±×·¥µéÀÌ Á¦´ë·Î µ¿ÀÛÇÏÁö ¾Ê´Â °æ¿ì·Î,
Windows XP¿¡¼´Â
DLL HellÀ» ÇÇÇϱâ À§ÇØ Side-by-Side Assembly¶ó´Â °³³äÀ» ¸¸µé¾ú´Âµ¥, ¿©·¯ ¹öÀüÀÇ DLLÀ» µ¿½Ã¿¡ ½Ã½ºÅÛ¿¡ Á¸ÀçÇÒ ¼ö ÀÖ°Ô ÇØÁÖ°í, DLLÀ» »ç¿ëÇÏ´Â ÀÀ¿ëÇÁ·Î±×·¥ÀÌ ¿øÇÏ´Â DLL ¹öÀüÀ» °ñ¶ó¼ ¾µ ¼ö ÀÖµµ·Ï ÇØÁÖ´Â ¹æ¹ýÀÌ´Ù.
SideBySideAssembly ÀÇ °·ÂÇÑ Á¡Àº
ÀÀ¿ëÇÁ·Î±×·¥¿¡¼ Á÷,°£Á¢ÀûÀ¸·Î ·ÎµåÇÏ´Â ¸ðµç DLLÀÌ ÀÌ ¼³Á¤ÀÇ ¿µÇâÀ» ¹Þ´Â´Ù´Â °ÍÀÌ´Ù. ÀÌÀü¿¡´Â ÀÀ¿ëÇÁ·Î±×·¥ÀÌ ·ÎµåÇÑ DLL¿¡ ÀÇÇؼ °£Á¢ÀûÀ¸·Î ·ÎµåµÇ´Â DLLÀ» Á¦¾îÇÒ ¼ö ÀÖ´Â ¹æ¹ýÀÌ ¾ø¾ú´Ù.
ÀÌ·¯ÇÑ »õ·Î¿î ¹æ½ÄÀ¸·Î
±âÁ¸¹æ½Ä´ë·Î VS.NET ¶óÀ̺귯¸®¸¦ º¹»çÇϴ°ÍÀ¸·Î ³¡³ªÁö ¾Ê°í ¹èÆ÷¸¦ À§ÇÑ º°µµÀÇ ÀÛ¾÷ÀÌ ÇÊ¿äÇÏ°Ô µÈ´Ù(VS 2005ÀÇ crt dllÀ» ±×³É ¹èÆ÷ÇÏ¸é ³²ÀÇ ÄÄÇ»ÅÍ¿¡¼ ½ÇÇàÀÌ ¾ÈµÈ´Ù)
1.1 °³º°ÆÄÀÏ #Microsoft.VC80.CRT.zip Microsoft.VC80.MFC.zip vcredist_x86.exe
1-1.ÄܼÖÇÁ·Î±×·¥Àº "Microsoft.VC80.CRT.zip" ÆÄÀÏÀ» ¹Þ¾Æ¼ ¾ÐÃàÆÄÀϳ» ÆÄÀÏÀ» ½ÇÇàÆÄÀÏ°ú °°ÀÌ »ç¿ë
1-2.MFC ÇÁ·Î±×·¥ÀÎ °æ¿ì´Â "Microsoft.VC80.MFC.zip" ÆÄÀÏÀ» Ãß°¡·Î ¹Þ¾Æ¼ ÆÄÀÏÀ» »ç¿ë 1-3.´Ù¸¥ ÇÁ·Î±×·¥ »ç¿ë½Ã Æí¸®¼ºÀ» À§ÇØ °¡´ÉÇϸé vcredist_x86.exe ÆÄÀÏÀ» (Microsoft Visual C++ 2005 Àç¹èÆ÷ °¡´É ÆÐÅ°Áö(x86))¹Þ¾Æ¼ ¼³Ä¡ 1.2 VS.NET¿ë ¶óÀ̺귯¸® #1.¸±¸®Áî ¹öÀüÀº
C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86
2.µð¹ö±× ¹öÀüÀº
C:\Program Files\Microsoft Visual Studio 8\VC\redist\Debug_NonRedist
cf.windows¾È¿¡ winsxsÆú´õ¸¦ ã°í, ¾øÀ¸¸é crt¸í°ú °°Àº Æú´õ¸íÀÌ ÀÖÀ¸¸é ±×¾È¿¡ manifestÆÄÀÏÀ» ã°í, °Å±âµµ ¾øÀ¸¸é ½ÇÇàÆÄÀÏ°ú °°Àº Æú´õ¿¡¼ manifest¸¦ ã´Â´Ù(in ÇѱÛÆÇ msdn)¿¡¼ CRT, MFC, ATL¿¡ ¸Â´Â dllÀ» ½ÇÇàÆÄÀÏ°ú °°Àº °æ·Î¸í¿¡ º¹»çÇØ ÁØ´Ù.(Microsoft.VC80.*.manifest µµ Æ÷ÇÔÇؼ) 2 *.dll°ú WinSxS #2.1 msvcr80.dll/ msvcp80.dll #-.msvcr71.dll/ msvcp71.dll ; Microsoft Visual Studio 2003À» ÅëÇØ °³¹ßÇÑ ¾îÇø®ÄÉÀ̼ǿ¡¼ ÇÊ¿ä·Î ÇÏ´Â dll ÆÄÀÏ-.msvcr80.dll/ msvcp80.dll ; Microsoft Visual Studio 2005À» ÅëÇØ °³¹ßÇÑ ¾îÇø®ÄÉÀ̼ǿ¡¼ ÇÊ¿ä·Î ÇÏ´Â dll ÆÄÀÏ -.msvcr71.dll/ msvcp71.dll ÆÄÀÏÀº ´å³Ý ÇÁ·¹ÀÓ¿öÅ©¿Í´Â ÀüÇô »ó°üÀÌ ¾ø´Â ÆÄÀÏÀ̸ç,
msvcrÀº Microsoft¢ç C Runtime LibraryÀ̸ç, msvcp´Â Microsoft¢ç C++ Runtime Library ÀÌ´Ù. Áï, C/C++ Ç¥ÁØ ¶óÀ̺귯¸®ÀÇ ÇÔ¼öµéÀ» »ç¿ëÇϸç, mxmlc.exe¿¡ C/C++ ¶óÀ̺귯¸® ÇÔ¼öµé Äڵ尡 Æ÷ÇÔµÇÁö ¾Êµµ·Ï ºôµåµÇ¾ú±â ¶§¹®¿¡ ½ÇÇà½Ã ÀÌ ÄÚµåµéÀ» ´ã°í ÀÖ´Â dll ÆÄÀÏÀÌ ÇÊ¿äÇÏ´Ù.
ÀÌ´Â ´å³Ý ÇÁ·¹ÀÓ¿öÅ©¿Í´Â ÀüÇô »ó°üÀÌ ¾ø´Â C/C++·Î °³¹ßµÈ ÇÁ·Î±×·¥ÀÇ ½ÇÇà½Ã °ü·ÃµÈ »çÇ×À¸·Î mxmlc.exe°¡ VC++·Î °³¹ßµÇ¾ú´Ù´Â À̾߱âÀ̸ç, VC++·Î °³¹ßµÈ ¸ðµç ÇÁ·Î±×·¥¿¡ °øÅëÀûÀ¸·Î ÇØ´çµÈ´Ù. 2.2 dll Àû¿ë ¿¹ #MFC¸¦ ¾È¾²°í release¹öÀü¸¸ ¹èÆ÷ÇÑ´Ù¸é
C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT ¾È¿¡ ÀÖ´Â
msvcm80.dllÀº ¸Å´ÏÁöµåC++¿ë crt¶ó native¸¦ ¾²´Â °æ¿ì´Â ¹èÆ÷ÇÏÁö ¾Ê¾Æµµ µÈ´Ù. 2.3 WinSxS #WinSxSÀ̶õ Native Assembly Cache·Î, ±â´ÉÀº .NET ÀÇ GAC(Global Assembly Cache)¿Í À¯»çÇϸç,°á±¹ GAC ó·³ manifest ¸¦ ÅëÇؼ WinSxS ¿¡¼ ÁöÁ¤ÇÑ assembly, Áï dll À» ÁöÁ¤ÇÑ´Ù.
¹®Á¦´Â VS 2005 ·Î ¸¸µç ¾îÇø®ÄÉÀ̼ÇÀÌ msvcr80.dll (¸±¸®Áî ¹öÀü Àΰæ¿ì) À» »ç¿ëÇϵµ·Ï ¼³Á¤µÇ¾îÀÖ´Ù¸é ¹èÆ÷½Ã¿¡ ¿¹Àü ó·³ msvcr80.dll À» exe ¿Í °°Àº Æú´õ ȤÀº path °¡ ÀâÀÎ °æ·Î¿¡ º¹»çÇϴ°ɷΠ³¡³ªÁö ¾Ê´Â°í, ÇÊ¿äÇÑ dll À» exe ¿Í °°Àº µð·ºÅ丮 ¶Ç´Â path ¿¡ ¹èÆ÷Çصµ ¾Æ·¡¿Í °°Àº ¿À·ù°¡ ¹ß»ýÇÑ´Ù.
(´ÙÀ½ ±×¸²Àº http://somma.egloos.com/3020481¿¡¼ Àοë) [vs8 ¸µÄ¿¿É¼Ç¿¡¼ manifest »ý¼ºÇϵµ·Ï ¼³Á¤ÇÑ °æ¿ì] [vs8 ¸µÄ¿¿É¼Ç¿¡¼ manifest ¸¦ »ý¼ºÇÏÁö ¾Êµµ·Ï ¼³Á¤ÇÑ °æ¿ì] ´ÙÀ½ÀÇ 3°¡Áö ¹æ¹ýÀ¸·Î ÇØ°á 1.Vistual C++ Redistributable Merge Module À» ÀÌ¿ëÇؼ Shared Side-By-Side assemblies ¸¦ Native Assembly Cache, Áï WinSxS Æú´õ¿¡ ¼³Ä¡ÇÑ´Ù. ÀÌ°Ô °¡Àå ±ÇÀåÇÏ´Â ¹æ½ÄÀ̶ó°í ÇÏÁö¸¸.. WinSxS Æú´õ¿¡ Assembly µéÀ» µî·ÏÇÏ·Á¸é Admin ±ÇÇÑÀÌ ÇÊ¿äÇÏ´Ù.
Redistributing Using Merge Modules - http://msdn2.microsoft.com/en-us/library/ms235290(VS.80).aspx
2. Visual C++ Redistributable Package (VCRedist_x86.exe, VCRedist_x64.exe, VCRedist_ia64.exe) ¸¦ ÀÌ¿ëÇؼ 1¹ø ó·³ WinSxS ¿¡ Assembly ¸¦ µî·ÏÇÑ´Ù(ÀÌ ÆÐÅ°ÁöµéÀº ms »çÀÌÆ®¿¡¼ ´Ù¿î·Îµå ÇÒ ¼ö ÀÖ´Ù). How to: Deploy using a Setup and Deployment Project - http://msdn2.microsoft.com/en-us/library/ms235317(VS.80).aspx
3. Private Assembly¸¦ »ç¿ëÇÑ´Ù. ¹®Á¦´Â °øÀ¯µÇ´Â assembly°¡ ¾Æ´Ï¹Ç·Î È¥ÀÚ¸¸ »ç¿ëÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÌ°í, assembly µé¿¡ ´ëÇÑ menifest ¸¦ ÇÔ²² ¹èÆ÷ÇØ¾ß ÇÑ´Ù.
vs8 À» µðÆúÆ®·Î ¼³Ä¡ÇÑ °æ¿ì
C:\Program Files\Microsoft Visual Studio 8\VC\redist\x86\Microsoft.VC80.CRT
manifest ¸¦ »ý¼ºÇؼ ÀÓº£µùÇÏÁö ¾ÊÀº °æ¿ì (vs 2005 ÀÌÀü ¹öÀü) ¶Ç´Â exe ¿¡ ´ëÇÑ manifest °¡ ÇÔ²² Á¸ÀçÇÏÁö ¾Ê´Â °æ¿ì loadLibrary() ¸¦ ÅëÇؼ msvcr80.dll À» ·ÎµùÇÏ·Á ÇÏ¸é ¿À·ù°¡ ¹ß»ýÇÑ´Ù.¾Æ·¡¿¡ DLL µéÀ̶û manifest °¡ Àִµ¥ À̳༮µéÀ» ÇÔ²² ¹èÆ÷ÇØ ÁÖ¸é µÈ´Ù. (crt ¶óÀ̺귯¸®¸¸ »ç¿ëÇÑ °æ¿ì msvcr80.dll °ú Microsoft.VC80.CRT.manifest ¸¸ ¹èÆ÷ÇÏ¸é µÈ´Ù)
manifest ÆÄÀÏÀ» ¹èÆ÷ÇÒ ¶§ ºôµåȯ°æ¿¡ µû¶ó¼ ¹®Á¦°¡ ¹ß»ýÇÒ ¼ö ÀÖ´Ù.
¿¹¸¦ µé¾î exe ÆÄÀÏÀ» service pack 1 ÀÌ Àû¿ëµÈ Visual Studio 2005 ·Î ¸¸µé°í, service pack1 ÀÌ Àû¿ëµÇÁö ¾Ê¾ÒÀ» ´ç½ÃÀÇ manifest ¸¦ ¹èÆ÷Çß´Ù¸é ¿À·ù°¡ ¹ß»ýÇÑ´Ù. Áï ¹ÙÀ̳ʸ®ÀÇ ºôµåȯ°æ°ú µ¿ÀÏÇÑ ¹öÀüÀÇ manifest ¸¦ ¹èÆ÷ÇØ¾ß ÇÑ´Ù.
3 VS 2005 ÄÄÆÄÀÏÇÏ´Ùº¸¸é »ý±â´Â ¸µÅ© ¿¡·¯: warning PRJ0018 #VS2005 ÄÄÆÄÀÏÇÏ´Ùº¸¸é »ý±â´Â ¸µÅ© ¿¡·¯ÀÔ´Ï´Ù....¸µÅ© ¿¡·¯ ¸Þ½ÃÁö´Â.. 1>Linking...
1>Xxxx.lib(xxx.obj) : error LNK2001: unresolved external symbol __GSHandlerCheck
1>xxx.obj : error LNK2001: unresolved external symbol _Input 1>xxx.obj : error LNK2001: unresolved external symbol _Input 1>STANDARDSDK_500 (ARMV4I)\Debug/TestApp_WM.exe : fatal error LNK1120: 3 unresolved externals 1>Project : warning PRJ0018 : The following environment variables were not found: 1>$(PLATFORMDEFINES)
´ä>
http://www.microsoft.com/downloads/thankyou.aspx?familyId=bb4a75ab-e2d4-4c96-b39d-37baf6b5b1dc&displayLang=ko ¿¡¼ vs2005 ¼ºñ½ºÆÑ 1À» ¹Þ¾Æ¼ ¼³Ä¡ÇÏ¸é ¸µÅ© ¿¡·¯°¡ ÇØ°áµÇ³×¿ä. ^^;; |
Çô´Â ¸öÀ» º£´Â Ä®ÀÌ´Ù. HelpOnFormatting µüÁö_CEGUI ³ª¹«_stock Ã¥°¥ÇÇ_MFCInternals(1) |